我最近将当前版本的json2.js与我在项目中的版本进行了比较,并注意到函数表达式的创建和自我执行方式有所不同.
用于在括号中包装匿名函数然后执行它的代码,
(function () {
// code here
})();
Run Code Online (Sandbox Code Playgroud)
但现在它将自动执行的函数包含在括号中.
(function () {
// code here
}());
Run Code Online (Sandbox Code Playgroud)
有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是"既:(function(){})();和(function(){}());有效."
我想知道有什么区别?前者是否通过绕过全局匿名函数来占用内存?括号应该放在哪里?
我最近一直在研究很多JavaScript代码,并且我已经看到了使用IIFE的"公共"属性的两种不同方式.
第一个是创建变量并将该变量分配给IIFE内部的属性,如下所示:
var public1;
(function(){
var foo= "Foo", bar= "Bar";
public1= {
getFoo: function(){
return foo;
}
};
}());
Run Code Online (Sandbox Code Playgroud)
我看到的第二种方式是从IIFE返回一个对象,如下所示:
var public2 = (function(){
var foo2= "Foo2", bar2= "Bar2";
return {
getBar: function(){
return bar2;
}
};
}());
Run Code Online (Sandbox Code Playgroud)
这两种方式之间是否存在根本区别,还是只是偏好?我还创建了一个小提琴,以便您可以运行或更新代码:http://jsfiddle.net/bittersweetryan/gnh79/3/