我最近将当前版本的json2.js与我在项目中的版本进行了比较,并注意到函数表达式的创建和自我执行方式有所不同.
用于在括号中包装匿名函数然后执行它的代码,
(function () {
// code here
})();
Run Code Online (Sandbox Code Playgroud)
但现在它将自动执行的函数包含在括号中.
(function () {
// code here
}());
Run Code Online (Sandbox Code Playgroud)
有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是"既:(function(){})();和(function(){}());有效."
我想知道有什么区别?前者是否通过绕过全局匿名函数来占用内存?括号应该放在哪里?
JSLint对此错误的意义是什么?它应该如何改写?
Error: Problem at line 78 character 3: Move the invocation into the parens that contain the function:
})(jQuery);
均低于警戒这些代码块foo,然后bar.唯一的区别是})()和}()).
代码1:
(function()
{
bar = 'bar';
alert('foo');
})();
alert(bar);
Run Code Online (Sandbox Code Playgroud)
代码2:
(function()
{
bar = 'bar';
alert('foo');
}());
alert(bar);
Run Code Online (Sandbox Code Playgroud)
除了语法之外,还有什么区别吗?
可能重复:
"(function(){})()"和"(function(){}())"在JavaScript中功能相同吗?
这是我还没有想到的东西,但是我一直在使用function(){}(),因为我添加了括号后我的VIM语法突出显示,虽然我已经看过(function(){}) ()很多次,也许它是一个IE的东西?
编辑:
var singleton = function() {
// code
}();
var singleton = (function() {
// code
})();
Run Code Online (Sandbox Code Playgroud) 可能重复:
自动执行匿名JavaScript函数的括号位置?
有时我看到:
(function() { ... }());
Run Code Online (Sandbox Code Playgroud)
有时我看到:
(function() { ... })();
Run Code Online (Sandbox Code Playgroud)
这两种形式有区别吗?是否有任何令人信服的理由使用一种形式而不是另一种形式?
我已经阅读了很多关于Javascript中的闭包的内容.我在mozilla.org上看到,封闭应该被定义为
(function(){...})();
但在http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html上,它说封闭功能是
(function(){...}());
有什么区别或后者是错的?last()的目的是什么?你会把一些参数放进去吗?我正在寻找一个很好的参考.
编辑:此外,Mozilla.org上有一个例子
var makeCounter = function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
};
Run Code Online (Sandbox Code Playgroud)
为什么这个'功能'需要分号?如果需要在声明后立即调用,则应在结束分号之前放置a().但事实并非如此.