Pet*_*tai 22 javascript anonymous-function
可能重复:
自动执行匿名JavaScript函数的括号位置?
有时我看到:
(function() { ... }());
Run Code Online (Sandbox Code Playgroud)
有时我看到:
(function() { ... })();
Run Code Online (Sandbox Code Playgroud)
这两种形式有区别吗?是否有任何令人信服的理由使用一种形式而不是另一种形式?
CMS*_*CMS 35
这两种形式没有实际区别,但从语法的角度来看,两者之间的区别在于分组算子 - 括号 - 将在第一个例子中保存CallExpression
,包括FunctionExpression
:
CallExpression | | FunctionExpression | | | V V (function() { }()); ^ ^ |--PrimaryExpression --|
在第二个例子中,我们首先得到一个整体CallExpression
,它包含FunctionExpression
:
PrimaryExpression | FunctionExpression | V (function() { })(); ^ ^ |-- CallExpression --|