我通过 JSLint 运行了一个脚本,它发现了一个与括号放置有关的特定问题。
我写过:
(function(){})();
建议使用:
(function(){}());
我很好奇此特定更改修复了哪些错误或问题。我会假设,因为 JSLint 将其作为问题挑选出来,所以一定对某人来说是个问题。
扩展形式:
(
function (p) {
...code...
}
)(param); //parameters after the parens
-对比-
(
function (p) {
...code...
}(param) //parameters within the parens
);
最佳答案
JSLint 试图解决的具体问题与缺少关闭 ;
相关,这可能导致函数被解释为参数的错误:
(function A( arg ){
// stuff
})
(function B(){
...
});
完全有效,B
作为arg
传递给A
。然而,这通常不是预期的情况,因为它们通常是自动执行的,而尾随的 ()
被遗忘了。建议的语法消除了您可能不小心忘记按预期执行函数的任何混淆。
就其值(value)而言,我也几乎总是使用第一种语法;习惯。
关于javascript - 闭包应该如何格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918220/