t3r*_*rse 3 javascript design-patterns
我想知道,初始化对象时附加括号的意义是什么.例如:
var foo = function(){ ... }();
与
var foo = (function(){ ... }());
我假设与范围相关的东西,但我想知道是否有人可以更精确地了解具体的差异,因为他们似乎都基于每个匿名函数返回的内容初始化对象.
小智 5
在那个特定情况下,没有有效的区别.
有些人喜欢外部(...)因为它给=操作员附近的视觉提示,即调用该函数.
但是赋值运算符function会将其作为赋值运算符的右手操作数的表达式进行求值,因此可以调用它而无需进一步将其强制转换为函数声明.
如果没有赋值,则需要使用一些语法,让解释器知道该function关键字被用作匿名函数表达式.
例如...
(function() {
   // code
})();
这里括号解决了歧义function,使其被视为(...)组内的单个表达式.
分组运算符只是强制将a function作为表达式求值的一种方法.大多数JavaScript运算符都可用于此目的.一元运算符可能是最安全的,例如......
!function() {
   // code
}();
...要么...
void function() {
   // code
}();
在这两种情况下,它function被视为相应运算符的单个操作数.