代码1:
var x=(function(){
return {
greet:function(){
alert('Hello from code1');
}
};
})();
代码2:
var x=function(){
return {
greet:function(){
alert('Hello from code2');
}
};
}();
两者都将被调用,如:
x.greet();
在样式1中,我在括号内包含了自执行函数,而在第二个代码中却没有。两者都一样。 那么code1和code2之间的区别又是什么呢?
答案 0 :(得分:5)
没有实际差异。有些人喜欢一种方式而不是另一种方式,类似于将开口括号放在同一行或下一行,或标签与空格,或写x=1+2
而不是x=(1+2)
的偏好。
额外的括号可能会增加清晰度或混乱,完全取决于样式偏好。
答案 1 :(得分:2)
两个例子之间的差异很小。两者都从立即调用的函数的返回值创建变量。第一个包含在括号中,作为表达式,第二个是立即调用的函数。另请参阅What do parentheses surrounding a object/function/class declaration mean?