有些人则称为“自执行的匿名函数”javascript
在闭包中,咱们常常须要使用到匿名函数,我感受闭包就是一种匿名函数,子集。html
可是直接在匿名函数后面调用函数是会出错的。好比:java
function () { alert("Hello IIFE"); }();
// Uncaught SyntaxError: Unexpected token (
咱们指望系统当即调用这个匿名函数,可是系统会觉得咱们是在进行函数声明,进行函数声明须要有函数名称。而上面则没有,就会报错 在JavaScript高级程序设计第185页上讲,函数声明后面不能跟圆括号。闭包
那么咱们为它添加函数名咯,还会有一个小问题,以下:函数
1 function f() { 2 alert("IIFE"); 3 }(); 4 // Uncaught SyntaxError: Expected () to start arrow function, but got ';' instead of '=>'
那么咱们应该如何建立一个自执行的匿名函数呢?咱们可让引擎理解()前面的是一个表达式而不是一个函数,写法如:spa
(function () { alert("IIFE"); })(); //或者 (function () { alert("IIFE"); }());
咱们为匿名函数添加括号以后,被解析器解析为表达式,那么咱们也能够这样使用:设计
1 [ function () {}()]; 2 3 ~ function () {}(); 4 ! function () {}(); 5 + function () {}(); 6 - function () {}(); 7 8 new function () {}; 9 new function () {}() ; 10 11 var i = function () {}(); 12 13 0, function () {}(); 14 true && function () {}();
你们有什么补充的话请留言哈,么么哒~~~code
以上内容参考:htm
来源:阮一峰javascript:http://javascript.ruanyifeng.com/grammar/function.html#toc23blog
来源:知乎 长天之云 http://www.zhihu.com/question/20249179/answer/14487857