我试图更好地理解JavaScript的一些功能.在The Definitive JavaScript其中说自动执行的函数应该有括号围绕它们:
var obj = (function() {
var value = 0;
return {
increment: function(inc) {
value += typeof inc === "number" ? inc : 1;
},
getValue: function() {
return value;
}
}
})();
Run Code Online (Sandbox Code Playgroud)
但是在JavaScript - The Good Parts这个例子取自的地方,它具有上述自执行功能而没有括号圆,如下所示:
var obj = function() {
var value = 0;
return {
increment: function(inc) {
value += typeof inc === "number" ? inc : 1;
},
getValue: function() {
return value;
}
}
}();
Run Code Online (Sandbox Code Playgroud)
这两个例子都适用于我,但我想问一下我应该注意的功能是否有任何差异.我希望这不是太微不足道.我只是想确定一下.
非常感谢.
编辑:
正如Rob W指出的那样,关于这个问题还有另一个主题.这是一篇关于此问题的优秀博客,该博客与其他帖子相关联.
Aln*_*tak 13
这种情况没有任何区别,只是因为它的前缀是:
var obj = ...
Run Code Online (Sandbox Code Playgroud)
没有它,只有第一个版本是正确的,因为你需要额外的括号来允许解释器正确地解析function函数表达式而不是函数声明.
你当然只会省略var obj如果你只想运行该函数(即你想要它的副作用)但它没有返回任何值,或者你不关心它的返回值是什么.
| 归档时间: |
|
| 查看次数: |
3574 次 |
| 最近记录: |