下面两种代码风格有什么区别

What's the difference between below two code styles

代码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有什么区别,哪个是还押方式呢?

两个示例之间的差异很小。两者都从立即调用函数的 return 值创建变量。第一个用括号括起来,作为表达式,第二个是立即调用的函数。另见 What do parentheses surrounding a object/function/class declaration mean?

没有实际区别。有些人更喜欢一种方式,类似于将左大括号放在同一行或下一行,或制表符与空格,或写 x=1+2 而不是 x=(1+2) 的偏好。

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