如何将参数传递给数组中的函数?

时间:2016-09-24 09:24:21

标签: javascript

所以让我说我有一系列功能。如何为每个函数传递一个值?

这是一个愚蠢的例子:

var poopSong =[

function(this){ console.log('this is '+this);},
function(this){ console.log('that is '+this);},
function(this){ console.log('you are '+this);},

];

poopSong("poop")[1];

3 个答案:

答案 0 :(得分:2)

只需遍历数组:

for(int i = 0; i < poopSong.Length; i++){
     poopSong[i]("poop"); //not poopSong("poop")[i];
}

答案 1 :(得分:2)

poopSong是数组,因此要获取项目,请使用索引。由于数组中的项是函数,用()执行函数,传入参数(“value”);

poopSong[1]("value");

现在,如果您想了解每个项目,请使用循环?

for(var i = 0; i < poopSong.length; i++)
{
    poopSong[i]("value");
}

或在功能编程领域,使用forEach

poopSong.forEach(function(item){ item("value"); });

这就是你真正追求的,因为它非常基本的东西,或者我错过了什么。

其次,不要使用单词this作为参数,它是一个保留字,并且在JavaScript中有一个完整的其他上下文

答案 2 :(得分:1)

首先,您必须更改传递的参数,this是保留关键字,我认为您不想使用它。当然,您可以参考this中的console.log()。但是,我不认为这是你想要的。据说poopSong的声明应该类似于以下内容:

var poopSong = [
    function(a){ console.log('this is '+a);},
    function(b){ console.log('that is '+b);},
    function(c){ console.log('you are '+c);},
];

然后你可以将参数传递给这些函数,如下所示:

poopSong[0]('you value');

我们使用方括号和索引来获取数组的项目,因为在我们的例子中,item是一个函数,我们可以使用括号调用它并传递相应的参数。

var poopSong =[
    function(a){ console.log('this is '+a); },
    function(b){ console.log('that is '+b); },
    function(c){ console.log('you are '+c); }
];

poopSong[0]("1");
poopSong[1]("2");
poopSong[2]("3");