zzz*_*Bov 6 javascript closures
我通过JSLint运行了一个脚本,它选择了一个带括号放置的特定问题.
我写过:
(function(){})();
Run Code Online (Sandbox Code Playgroud)
有人建议使用:
(function(){}());
Run Code Online (Sandbox Code Playgroud)
我很好奇这个特定的变化修复了什么错误或问题.我认为,因为JSLint选择了它作为一个问题,所以必须有人的问题.
扩展形式:
(
function (p) {
...code...
}
)(param); //parameters after the parens
Run Code Online (Sandbox Code Playgroud)
航班吗
(
function (p) {
...code...
}(param) //parameters within the parens
);
Run Code Online (Sandbox Code Playgroud)
JSLint试图修复的具体问题与缺少关闭有关;,这可能导致函数被解释为参数的错误:
(function A( arg ){
// stuff
})
(function B(){
...
});
Run Code Online (Sandbox Code Playgroud)
是完全有效的,B传递给A作为arg.然而,这通常不是预期的情况,因为这些通常意味着自动执行并且()忘记了尾随.建议的语法消除了您可能意外忘记按预期执行功能的任何混淆.
对于它的价值,我几乎总是使用第一种语法; 习惯.