This question already has answers here:
Difference between (function(){})(); and function(){}(); [duplicate]
                                
                                    (3个答案)
                                
                        
                        
                            Location of parenthesis for auto-executing anonymous JavaScript functions?
                                
                                    (4个答案)
                                
                        
                                3年前关闭。
            
                    
请考虑以下两个示例:

第一:

var x = (function(){  return 786;  }());


第二:

var y = function(){  return 786;  }();


我知道我们不能直接将function(){ return 786; }();用作羊膜肌自调用函数,但是现在由于将它辅助到变量x中,因此可以使用此函数。所以,


第一和第二种方法中变量x的行为结果是否有所不同?

最佳答案

不,不会有任何区别。

将函数包装在括号中会将其从function declaration转换为expression,可以有效地运行有效的expression

var x = (function(){  return 786;  }());


在此,用括号括起来的匿名函数是一个执行该函数并返回786并将其分配给var x的表达式。由于匿名函数是有效的表达式,因此它也可以单独运行。

var y = function(){  return 786;  }();


在这里,complete语句是赋值expression,因此它被执行并将值786存储到var y

要进一步阅读,请查看以下链接:

/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions

http://kangax.github.io/nfe/#function-statements

09-25 16:22