Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The only thing I've learned in the years that I've been writing Javascript is that the dollar symbol variable is as contentious as the West Bank. Obviously there has to be globals somewhere or else a library ceases to be a library in JS, but I see no problem is using the word jQuery explicitly, or simply passing it into a SEAN/IIFE:

  (function($) {
     $('#thing').hide();
  })(jQuery);


Yes, that's how you write a jQuery module. That's how I do it:

    (function($,undefined) {
        "use strict";
        ...
    })(jQuery);
Note the undefined. That's because undefined is not a literal but a variable in JavaScript and can be assigned to anything. This way I ensure that undefined is really undefined and "x === undefined" works. But I digress.


It has nothing to do with jQuery, or anything else. (function() {})(); is a pretty standard Javascript pattern to execute an anonymous function immediately at evaluation. Because javascript has lexical scoping at the function, your use of "use strict"; and any var-prepended variables won't be hoisted up the prototype chain, potentially becoming globals. The ability to pass in a global as a local variable is simply a convenience. The global is available inside the closure anyways. It's a global after all.

My point was, the battle over the dollar sign single character variable name is stupid.


About `undefined`, that’s not true anymore in ES5, btw.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: