3 回答
TA贡献1794条经验 获得超8个赞
这两种形式没有实际区别,但从语法的角度来看,两者之间的区别在于分组算子 - 括号 - 将在第一个例子中保存CallExpression,包括FunctionExpression:
CallExpression
| |
FunctionExpression |
| |
VV
(function(){}());
^ ^
| --PrimaryExpression - |
在第二个例子中,我们首先得到一个整体CallExpression,它包含FunctionExpression:
PrimaryExpression
|
FunctionExpression
|
V
(function(){})();
^ ^
| - CallExpression - |
TA贡献1811条经验 获得超6个赞
就编译器而言,两者之间没有区别。但是,会发现(function () {}())Douglas Crockford的JavaScript 代码约定中推荐使用该样式。
TA贡献1780条经验 获得超4个赞
就差异而言,它实际上只是语法糖。有点相当于:“你喜欢jQuery()还是$()?” 两者都可以互换地编译,执行和使用(AFAIK)。
从我到目前为止看到的代码示例中,更多人似乎遵循Crockford代码约定:
(function() { ... }());
就个人而言,我更喜欢这个(function(){})();惯例,因为我觉得这个功能是自动执行的; 我也是jQuery的大用户,这是jQuery源代码中使用的约定。
此外,无论您选择使用哪种形式,都可以使用parens来封装您的自动执行功能。
添加回答
举报