Javascript匿名函数定义

Javascript匿名函数定义,javascript,anonymous-function,Javascript,Anonymous Function,可能重复: 在给定的两种声明和调用匿名函数的方法之间是否存在差异 备选案文1: (function(){ console.log('Declare and call anonymous function'); })(); 备选案文2: (function(){ console.log('Declare and call anonymous function'); }()); 这两个函数在计算后都会被调用。但我无法理解其中的区别。不,没有区别:这两个选项在语法上不同,但

可能重复:


在给定的两种声明和调用匿名函数的方法之间是否存在差异

备选案文1:

(function(){
    console.log('Declare and call anonymous function');
})();
备选案文2:

(function(){
    console.log('Declare and call anonymous function');
}()); 

这两个函数在计算后都会被调用。但我无法理解其中的区别。

不,没有区别:这两个选项在语法上不同,但在语义上是等效的。考虑命名函数:

(foo())
vs


也许更清楚的是,它们是如何相同的。

选项1将保证在调用函数之前定义并可用该函数。也许是为了兼容性(浏览器在复杂的函数定义情况下的行为会有很大的不同)!function(){console.log('Declare and call anonymous function');}()看我的答案,没有实际的区别,只是语法层次上的区别。这个问题类似于可能有区别:
new(foo)(
不等于
new(foo())
,由于
new
s的优先级,第一个示例相当于
(new(foo))()
?这一点很好,但我不认为有必要在我的答案中添加这一点,因为这个问题似乎将被删除。
(foo)()