This is not actually directly related to Angular, it is a JS template known as an Expression with an immediate call function .
This is one of the most useful templates in JavaScript, primarily because of:
Code encapsulation
Since functions have a closure in JS, we can use this template to create private data very easily:
var index = (function iife() {
var counter = 0;
return function inner() {
return counter++;
};
})();
console.log(index());
console.log(index());
console.log(index());
console.log(index.counter)
Run codeHide result
IIFE, , IIFE. , , $ jQuery :
(function ($) {
})(jQuery);
, IIFE , , RequireJS NodeJS:
var myModule = (function iife(initData) {
var module = {};
var privateVar1, privateVar2;
function privateMethod() {
console.log('yeeey');
}
module.somePublicProperty = 1;
module.somePublicMethod = function() {
privateMethod();
};
return module;
})();
myModule.somePublicMethod();
Hide result