摘要 您能解释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); }(); 你能跟我解释一下吗? #1楼 即使这是一个古老的问答,它仍然讨论了一个主题,该主题至今仍使许多开发人员陷入困境。