Open artdong opened 5 years ago
IIFE( 立即调用函数表达式)是一个在定义时就会立即执行的 JavaScript 函数。
这是一个被称为 自执行匿名函数 的设计模式,主要包含两部分。第一部分是包围在 圆括号运算符 () 里的一个匿名函数,这个匿名函数拥有独立的词法作用域。这不仅避免了外界访问此 IIFE 中的变量,而且又不会污染全局作用域。
第二部分再一次使用 () 创建了一个立即执行函数表达式,JavaScript 引擎到此将直接执行函数。
实现代码隐藏(JavaScript 中只有函数能创建作用域);
隔离(防止污染或污染别人,并且为变量取名称很杀脑细胞);
function foo() {
console.log('hello');
}();
以function关键字开头的语句会被解析为函数声明,而函数声明是不允许直接运行的。 只有当解析器把这句话解析为函数表达式,才能够直接运行,怎么办呢?以运算符开头就可以了。
下面都是IIFE(自执行函数表达式)
(function foo(){ console.log('hello'); })();
(function foo(){ console.log('hello'); }());
!function foo(){ console.log('hello'); }();
+function foo(){ console.log('hello'); }();
void function foo() {console.log('hello')}();
什么是IIFE?