以下两种代码样式之间有什么区别

时间:2016-06-14 01:11:14

标签: javascript anonymous-function

代码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之间的区别又是什么呢?

2 个答案:

答案 0 :(得分:5)

没有实际差异。有些人喜欢一种方式而不是另一种方式,类似于将开口括号放在同一行或下一行,或标签与空格,或写x=1+2而不是x=(1+2)的偏好。

额外的括号可能会增加清晰度或混乱,完全取决于样式偏好。

答案 1 :(得分:2)

两个例子之间的差异很小。两者都从立即调用的函数的返回值创建变量。第一个包含在括号中,作为表达式,第二个是立即调用的函数。另请参阅What do parentheses surrounding a object/function/class declaration mean?