为什么我可以写
var foo = function(){}();
Run Code Online (Sandbox Code Playgroud)
但不能
function(){}();
Run Code Online (Sandbox Code Playgroud)
有任何设计原因吗?
Dav*_*ton 36
第一个例子是赋值:右侧是表达式,匿名函数的立即执行是有意义的.
第二个例子是一个声明:一旦结束"}",声明就结束了.Parens本身没有意义 - 它们必须包含一个表达.尾随")"是一个错误.
必须将独立声明转换为表达式:
(function() {})(); // Or...
(function() {}());
Run Code Online (Sandbox Code Playgroud)
第一个使声明成为表达式,然后执行结果.第二个将声明和执行转换为表达式.
另请参见何时使用括号,何时不使用括号?
您可以(function(){})();,而不是在命名函数:var foo = function(){}();
您正在设置foo函数的返回值,在您的情况下undefined,因为所有函数都返回JavaScript中的内容.
| 归档时间: |
|
| 查看次数: |
33483 次 |
| 最近记录: |