摘要
你能解释一下JavaScript中封装匿名函数的语法背后的原因吗?为什么这行得通:(function(){})();
,但这行不通:function(){}();
我所知道的
在JavaScript中,可以创建一个命名函数,如下所示:
function twoPlusTwo(){
alert(2 + 2);
}
twoPlusTwo();
您还可以创建一个匿名函数并将其分配给一个变量:
var twoPlusTwo = function(){
alert(2 + 2);
};
twoPlusTwo();
您可以通过创建匿名函数,然后将其包装在括号中并立即执行来封装代码块:
(function(){
alert(2 + 2);
})();
当创建模块化脚本时,这是很有用的,以避免当前作用域或全局作用域与潜在冲突变量的混乱-就像在Greasemonkey脚本、jQuery插件等的情况下。
现在,我明白为什么这是可行的了。括号包含内容并仅公开结果(我相信有更好的方式来描述它),例如使用(2 + 2) === 4
。
我不明白的是
但我不明白为什么这个不能同样有效:
function(){
alert(2 + 2);
}();
你能给我解释一下吗?
https://stackoverflow.com/questions/1634268
复制相似问题