Skip to content

Instantly share code, notes, and snippets.

@padolsey
Created July 17, 2010 13:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save padolsey/479517 to your computer and use it in GitHub Desktop.
Save padolsey/479517 to your computer and use it in GitHub Desktop.
// How it probably should be done:
var options = Array.prototype.slice.call(arguments),
length = options.length,
thisObj = options.shift(),
script = document.createElement('script');
// How I sometimes do it...
var ops = Array.prototype.slice.call(arguments),
len = ops.length,
hoc = ops.shift(),
scr = document.createElement('script');
// Btw, 'hoc' is 'this' in Latin...
@jdalton
Copy link

jdalton commented Jul 17, 2010

I usually just move the ='s over:
var options = Array.prototype.slice.call(arguments, 0),
length = options.length,
thisObj = options.shift(),
script = document.createElement('script');

But it just depends on the length of the var list and the look.

@jdalton
Copy link

jdalton commented Jul 17, 2010

15.4.4.10 Array.prototype.slice (start, end)

The slice method takes two arguments, start and end, and returns an array containing the elements of the array from element start up to, but not including, element end (or through the end of the array if end is undefined). If start is negative, it is treated as length+start where length is the length of the array. If end is negative, it is treated as length+end where length is the length of the array. The following steps are taken:

...

5 . Let relativeStart be ToInteger(start).

ToInteger(start) will produce 0 if the start is undefined.

However, I have noticed some implementations will error when passing an explicit undefined end argument [].slice(0, undef).
So I may be overly cautious but I like to at least pass a start argument of 0.

@padolsey
Copy link
Author

@jdalton,

I've never encountered an issue with slice() (no args), but I guess it wouldn't hurt to add a 0 ... just in case!

I like the idea of moving the =... although I might also tab the identifiers so that they line up (not sure if that was a mistake):

var options = Array.prototype.slice.call(arguments, 0),
    length  = options.length,
    thisObj = options.shift(),
    script  = document.createElement('script');

@jdalton
Copy link

jdalton commented Jul 17, 2010

Cool. On tabbing the identifiers, I usually do a one space indent for multi-line var lists. (my coding style has been influenced by bits of PrototypeJS, Andrew Dupont, and Diego Perini)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment