Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将参数传递给匿名函数不会导致它返回函数_Javascript_Oop_Anonymous Function - Fatal编程技术网

Javascript 将参数传递给匿名函数不会导致它返回函数

Javascript 将参数传递给匿名函数不会导致它返回函数,javascript,oop,anonymous-function,Javascript,Oop,Anonymous Function,为什么将参数传递给匿名函数会影响结果?例如,下面的脚本将a1显示为函数(),将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] 您的第一行代码从不调用该函数 写入var a=function(){…}将函数本身分配给a 您的第二行确实调用了该函数,就像任何

为什么将参数传递给匿名函数会影响结果?例如,下面的脚本将a1显示为
函数()
,将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]

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

写入
var a=function(){…}
将函数本身分配给
a


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

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

写入
var a=function(){…}
将函数本身分配给
a


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

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

写入
var a=function(){…}
将函数本身分配给
a


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

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

写入
var a=function(){…}
将函数本身分配给
a


您的第二行确实使用
(2)

调用了该函数,就像任何其他函数调用一样,因为对a1的所有赋值都是创建一个匿名函数,但实际上并不执行它

对a2的赋值同时创建和执行函数,因为您已经在后面添加了paren以实际调用它

要创建等效代码,您需要以下内容:

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);

var a1=(函数(){return[1*2,2*2,3*2];})() 因为对a1的所有赋值都是创建一个匿名函数,但实际上并没有执行它

对a2的赋值同时创建和执行函数,因为您已经在后面添加了paren以实际调用它

要创建等效代码,您需要以下内容:

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);

var a1=(函数(){return[1*2,2*2,3*2];})() 因为对a1的所有赋值都是创建一个匿名函数,但实际上并没有执行它

对a2的赋值同时创建和执行函数,因为您已经在后面添加了paren以实际调用它

要创建等效代码,您需要以下内容:

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);

var a1=(函数(){return[1*2,2*2,3*2];})() 因为对a1的所有赋值都是创建一个匿名函数,但实际上并没有执行它

对a2的赋值同时创建和执行函数,因为您已经在后面添加了paren以实际调用它

要创建等效代码,您需要以下内容:

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);


var a1=(函数(){return[1*2,2*2,3*2];})();真正地为什么不呢?为什么第二行实际上调用了这个函数?@user1032531:你认为它为什么调用这个函数?哇,我想我总是误解了。第一行定义函数,第二行调用它。因此(未测试),
a1(2)
应该返回一些内容。@user1032531:Yes<代码>a1(2)
确实返回了一些内容。但是,这并不影响
a1
@user1032531:是;这就是所谓的结束。这是Javascript的一大优点。真的吗?为什么不呢?为什么第二行实际上调用了这个函数?@user1032531:你认为它为什么调用这个函数?哇,我想我总是误解了。第一行定义函数,第二行调用它。因此(未测试),
a1(2)
应该返回一些内容。@user1032531:Yes<代码>a1(2)
确实返回了一些内容。但是,这并不影响
a1
@user1032531:是;这就是所谓的结束。这是Javascript的一大优点。真的吗?为什么不呢?为什么第二行实际上调用了这个函数?@user1032531:你认为它为什么调用这个函数?哇,我想我总是误解了。第一行定义函数,第二行调用它。因此(未测试),
a1(2)
应该返回一些内容。@user1032531:Yes<代码>a1(2)
确实返回了一些内容。但是,这并不影响
a1
@user1032531:是;这就是所谓的结束。这是Javascript的一大优点。真的吗?为什么不呢?为什么第二行实际上调用了这个函数?@user1032531:你认为它为什么调用这个函数?哇,我想我总是误解了。第一行定义函数,第二行调用它。因此(未测试),
a1(2)
应该返回一些内容。@user1032531:Yes<代码>a1(2)
确实返回了一些内容。但是,这并不影响
a1
@user1032531:是;这就是所谓的结束。这是Javascript的优点之一。谢谢你,迈克。这是一个我不知道的概念。谢谢迈克。这是一个我不知道的概念。谢谢迈克。这是一个我不知道的概念。谢谢迈克。这是一个我不知道的概念。