考虑以下两个例子:
第一:
var x = (function(){ return 786; }());第二:
var y = function(){ return 786; }();我知道我们不能直接使用function(){ return 786; }();作为一个无菌自调用函数,但是现在由于我将它辅助到变量x,所以我可以使用这个函数。所以,
x的行为有什么不同吗?发布于 2016-11-08 14:16:39
不是的。不会有什么区别的。
将函数封装在括号中将它们从function declaration转换为expression,有效的expression可以单独运行。
var x = (function(){ return 786; }());在这里,括在括号中的匿名函数是一个表达式,它执行函数并返回786,并将其分配给var x。因为匿名函数是一个有效的表达式,所以它也可以单独运行。
var y = function(){ return 786; }();在这里,完整的语句是赋值expression,因此它被执行并将值786存储到var y。
欲进一步阅读,请参阅以下链接:
/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions
http://kangax.github.io/nfe/#function-statements
https://stackoverflow.com/questions/40488429
复制相似问题