IIFE全称叫做:Immediately invoked function expressions
翻译为:立即调用函数表达式。
写法规范为(函数体)();
如: (function(){……})();
第一个括号包括的是一个匿名函数。
该函数有独立的作用域,不仅函数体外部无法访问内部,而且函数内部的变量或方法也不会污染外部的全局作用域。
第二个括号创建了一个立即执行函数表达式,JavaScript 引擎到此将直接执行函数。
举个例子:
(function(){
var myName="IIFE测试";
})();
console.log(myName);
此时,我们在浏览器中运行该段代码时,浏览器会提示myName未定义。
这就是上面我们所说的独立作用域、不会污染全局作用域的意思。
那如果我们想要访问函数体内部的变量该如何修改呢?
var result=(function(){
var myName="IIFE测试";
return myName;
})();
console.log(result);
此时在浏览器中访问时,就可以打印出myName的值。