第一部分是具有词法作用域的匿名函数,它包含在分组运算符()内。
第二部分创建 IIFE,JavaScript 引擎将通过它直接解释函数。
(function () { statements })(); // Syntax of IIFE with ES6 arrow functions (though parentheses only allowed on outside) (() => { /* ... */ })();
(function() { console.log("Hello World"); })();
Hello World
假设任何常规函数定义。
将该定义包裹在一对括号内,这将创建函数表达式。
最后,我们必须添加一对括号和一个分号来标记语句的结尾。
// Regular Function. function hello() { console.log("Regular function"); }; // Regular Function execution. hello(); // IIFE creation and execution. (function() { console.log("Immediately Invoked Function Expression"); })();
Regular function Immediately Invoked Function Expression
立即调用的函数表达式(IIFE) 有其作用域。函数表达式中声明的变量在函数外不可用。
与其他函数一样,IIFE 也可以是匿名的或命名的。
IIFE 也可以参数化。例如,
(function (x, y, z) { console.log(x); console.log(y); console.log(z); })(100, 200, 300);
100 200 300