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