在许多书籍/ 博客文章中 ,自调用匿名函数模式的方式如下:
(function() {
var foo = 'bar';
})();
但是,在此上运行JSLint会出现此错误:
将调用移动到包含该函数的parens中。
例如将其改为此作品:
(function() {
var foo = 'bar';
}());
问题
- 为什么第一个实现对JSLint来说不够好? 有什么区别?
- 什么是首选形式? JSLint总是对的吗?
- 它为什么有效? 在所有
function(){}()
抛出一个SyntaxError: Unexpected token (
但用parens包裹它会让它突然间起作用吗? 例如(function(){}()
) - 工作正常
(毕竟这是JavaScript,而不是Lisp,那么包装parens对ohterwise语法错误的影响是什么?)
编辑 :这是对此的一些后续(我不会说完全重复): JSLint错误:“将调用移动到包含函数的parens” ,所以我的主要问题是#3,为什么它完全有效?