Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript global variables & self-invoking anonymous functions

Tags:

javascript

So I've been reading through Javascript - The Good Parts and one thing that Crockford points out is the use weakness of global variables in Javascript, in such a way that if your product is expanded in some manner, and it relies on a 'global' variable it could be inadvertently set.

That's all good and fine and I understand the pros/cons of protecting variables, in other manners such as closures as well. However, I was doing some thinking, and wrapping code in a function like so:

(function () {
    var x = 'meh';
})();
(function () {
    alert(typeof x); // undefined
})();

gives it variable scope, which thereby prevents cross contamination of variables. I'm not sure if there's a blatant downside to this approach though and wondered if the community had any input, or if I'm just overthinking things and ignoring the main point.

like image 652
A Wizard Did It Avatar asked Oct 28 '10 17:10

A Wizard Did It


1 Answers

That's a perfectly legal way of doing things -- the variables inside of your function (as long as they are prefaced by var) are local to the function. It's called the module pattern, and it's very well accepted.

like image 145
Sean Vieira Avatar answered Oct 11 '22 13:10

Sean Vieira