IIFE stands for: Immediately-Invoked Function Expression
It is a self-executing anonimous function like this:
(function($){ $.fn.myplugin = funnction(options) { var settings = {}; $.extend(settings, this.myPlugin.defaults, options); return this; }; $.fn.myPlugin.defaults = { option1: 'option1', option2: 'option2', option3: 'option3' }; })(jQuery);
Another good example
// Create an anonymous function expression that gets invoked immediately, // and assign its *return value* to a variable. This approach "cuts out the // middleman" of the named `makeWhatever` function reference. // // As explained in the above "important note," even though parens are not // required around this function expression, they should still be used as a // matter of convention to help clarify that the variable is being set to // the function's *result* and not the function itself. var counter = (function(){ var i = 0; return { get: function(){ return i; }, set: function( val ){ i = val; }, increment: function() { return ++i; } }; }()); // `counter` is an object with properties, which in this case happen to be // methods. counter.get(); // 0 counter.set( 3 ); counter.increment(); // 4 counter.increment(); // 5 counter.i; // undefined (`i` is not a property of the returned object) i; // ReferenceError: i is not defined (it only exists inside the closure)
Source: http://benalman.com/news/2010/11/immediately-invoked-function-expression/