立即函数调用语法
有一个JSLint选项,实际上是一个好的部分,“[需要]围绕立即调用的parens,”意味着构造
(function () { // ...})();
反而需要写成
(function () { // ...}());
我的问题是 - 任何人都可以解释为什么第二种形式可能被认为更好?它更有弹性吗?不容易出错?它比第一种形式有什么优势?
自从提出这个问题以来,我逐渐理解了在函数值和函数值之间进行清晰视觉区分的重要性。考虑立即调用的结果是赋值表达式的右侧的情况:
var someVar = (function () { // ...}());
虽然最外面的括号在语法上是不必要的,但是左括号给出了一个预先指示,即所分配的值不是函数本身,而是调用函数的结果。
这类似于Crockford关于构造函数大写的建议 - 它可以作为任何查看源代码的人的视觉提示。
哔哔one
www说
翻翻过去那场雪