Monday 31 March 2014

Javascript: What is the purpose of a self executing function in javascript?


It is a useful construct when trying to hide variables from the parent namespace. All the code within the function is contained in the private scope of the function, meaning it can't be accessed at all from outside the function, making it truly private.

Self-invocation (also known as auto-invocation) is when a function executes immediately upon its definition. This is a core pattern and serves as the foundation for many other patterns of JavaScript development.
I am a great fan :) of it because:
  • It keeps code to a minimum
  • It enforces separation of behavior from presentation
  • It provides a closure which prevents naming conflicts
Enormously – (Why you should say its good?)
  • It’s about defining and executing a function all at once.
  • You could have that self-executing function return a value and pass the function as a param to another function.
  • It’s good for encapsulation.
  • It’s also good for block scoping.
  • Yeah, you can enclose all your .js files in a self-executing function and can prevent global namespace pollution. ;)

Self executing functions in JavaScript

Source: http://mahtonu.wordpress.com/2010/05/19/self-executing-functions-in-javascript/

JavaScript has bunch of cool features; one of them can be self executing functions. :)
Also this self invocation feature could be surrounded by the best practices for JavaScript.
Let’s have an example of an anonymous self invoking function:
1
2
3
4
(function(){
var test =  2;
alert(test);
})();
Here, test variable has its own local scope, means it doesn’t interface with or pollute global scope and it dies out(remains as long as there’s somewhere in the page or in an event that references the variable you declared in your closure: Thanks Dan Beam for this correction :) ) when the function terminates.
One simple example:
1
2
3
4
5
6
var testVar = "Hi there";
 
(function testFunction(str)
{
alert(str);
})( testVar );
One more scoping example(by Dan Beam):
1
2
3
4
5
6
7
8
var class = (function () {
var private = function () { alert("Hey, I'm still here!"); };
return ({ test: function () { private(); }});
})();
 
// more JavaScript
 
class.test();
Self-invocation (also known as auto-invocation) is when a function executes immediately upon its definition. This is a core pattern and serves as the foundation for many otherpatterns of JavaScript development.
I am a great fan :) of it because:
  • It keeps code to a minimum
  • It enforces separation of behavior from presentation
  • It provides a closure which prevents naming conflicts
Enormously – (Why you should say its good?)
  • It’s about defining and executing a function all at once.
  • You could have that self-executing function return a value and pass the function as a param to another function.
  • It’s also good for block scoping.
  • Yeah, you can enclose all your .js files in a self-executing function and can prevent globalnamespace pollution. ;)
jQuery pursue such struct.
1
2
3
(function($) {
// $() is available here
})(jQuery);
It’s precisely the reason that jQuery doesn’t pollute the global namespace nearly as much as other libraries.

No comments:

Post a Comment