A long time ago, I saw someone encapsulate their entire JavaScript block with code something like the code below:
(function() {
// ...
})(this);
Questions:
- Is the code above correct?
- What benefit is there to encapsulating the entire JavaScript block like denoted above?
Yes, that’s correct. It’s called a self invoking anonymous function expression.
JavaScript variables have either function scope, or global scope. There is no block scope. Enclosing your code in a self invoking function like the one in your example creates a temporary local scope for single-use, immediately-run code, without polluting the global namespace.
Consider the following:
Whatever you declare in that self invoking function is held in a separate scope. The variable
xand the functionmyFunction()cannot be accessed from anywhere else. The code inother-javascript.jswon’t see them, for example, and it would be free to declare another functionmyFunction()without conflicts.