最近,我将json2.js的当前版本与项目中使用的版本进行了比较,并发现函数表达式的创建和自我执行方式有所不同。
用于将匿名函数包装在括号中然后执行的代码,
(function () { // code here })();
但是现在它将自动执行的函数包装在括号中。
(function () { // code here }());
有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是“既:(function(){})();和(function(){}());有效。”
(function(){})();
(function(){}());
我想知道有什么区别吗?前者是否通过留下全局匿名函数来占用内存?括号应位于何处?
它们实际上是相同的。
第一个将括号括在函数周围,以使其成为有效的表达式并调用它。表达式的结果是不确定的。
第二个执行函数,并且自动调用周围的括号使之成为有效的表达式。它还将评估为undefined。
我不认为有“正确”的方法,因为表达式的结果是相同的。
> function(){}() SyntaxError: Unexpected token ( > (function(){})() undefined > (function(){return 'foo'})() "foo" > (function(){ return 'foo'}()) "foo"