Way不会将参数传递给匿名函数,导致它返回一个函数

时间:2013-10-07 17:40:32

标签: javascript oop anonymous-function

为什么将参数传递给匿名函数会影响结果?例如,下面的脚本将a1显示为function(),将a2显示为数组。

var a1=(function(){return [1*2,2*2,3*2];});
var a2=(function(v){return [1*v,2*v,3*v];})(2);
console.log(a1,a2);

结果:

function() [2, 4, 6]

2 个答案:

答案 0 :(得分:2)

因为对a1的所有赋值都是创建一个匿名函数但实际上并不执行它。

对a2的赋值创建并且同时执行该函数,因为之后添加了parens以实际调用它。

要创建等效的代码,你需要这样的东西:

var a1=(function(){return [1*2,2*2,3*2];})(); <-- note the extra parens
var a2=(function(v){return [1*v,2*v,3*v];})(2);
console.log(a1,a2);

答案 1 :(得分:1)

您的第一行代码从不调用该函数。

var a = function() { ... }会将函数本身分配给a

你的第二行确实使用(2)调用该函数,就像任何其他函数调用一样。