考虑以下两个示例:
第一:
var x = (function(){ return 786; }());
第二:
var y = function(){ return 786; }();
我知道我们不能使用function(){ return 786; }();
直接作为 anoomymus 自调用函数,但现在因为我将它分配给变量 x
我可以使用这个功能。所以,
- 变量
x
的行为结果有什么不同吗?在第一个和第二个方法中?
最佳答案
没有。不会有什么区别。
将函数括在括号中会将它们从函数声明
转换为表达式
,并且可以在有效的表达式
上运行它自己的。
var x = (function(){ return 786; }());
这里,括号中的匿名函数是一个表达式,它执行该函数并返回786
,并将其分配给var x
。由于匿名函数是一个有效的表达式,因此它也可以单独运行。
var y = function(){ return 786; }();
这里,完整的语句是一个赋值表达式
,因此,它被执行并将值786
存储到var y
。
如需进一步阅读,请查看以下链接:
/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions
关于javascript - (函数(){}) vs 函数(){}();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488429/