(function(){})vs function(){}();

时间:2016-11-08 13:40:44

标签: javascript variable-assignment anonymous-function iife

考虑以下两个例子:

首先:

var x = (function(){  return 786;  }());

第二

var y = function(){  return 786;  }();

我知道我们不能直接使用function(){ return 786; }();作为anoomymus自我调用函数,但现在因为我将它指定给变量x我可以使用此函数。所以,

  • First Second 方法中变量x的行为结果有何不同?

1 个答案:

答案 0 :(得分:2)

没有。没有任何区别。

将括号中的函数包装为从function declaration转换为expression,并且可以自行运行有效的expression

var x = (function(){  return 786;  }());

这里,括在括号中的匿名函数是一个表达式,它执行函数并返回786,并将其分配给var x。由于匿名函数是一个有效的表达式,它也可以单独运行。

var y = function(){  return 786;  }();

此处,complete语句是赋值expression,因此,它将被执行并将值786存储到var y

如需进一步阅读,请查看以下链接:

/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions

http://kangax.github.io/nfe/#function-statements