将函数传递给数组,然后调用它

时间:2018-07-26 14:29:42

标签: javascript

我试图将一个函数添加到数组中,然后在以后调用它。

// So add it here
var list = [{ Name: "Name1", Name2: "Name", Function: test() }]

// Then call it later which will run the function
list.Function;

function test(){
    var test = "test";
    console.log(test);
}

3 个答案:

答案 0 :(得分:5)

当您将函数放入列表中时,您可能不想调用该函数,这是在将test()添加到数组中时要执行的操作。在创建列表并将结果添加到列表时,这将调用该函数。另外,要在引用它时调用它,您需要包括索引:

function test(){
    var test = "test";
    console.log(test);
}
// So add it here
var list = [{ Name: "Name1", Name2: "Name", Function: test }] // just add a reference to test no `()`

// Then call it later which will run the function
list[0].Function();  // list is an array so you need to reference the first item

答案 1 :(得分:0)

马克·迈耶(Mark Meyer)的很好回答。我要补充的是,使这成为可能的是Java语言函数是一等成员。没有任何其他对象的区别。

因此,我们甚至可以将属性分配给以下函数:

function foo () {}

foo.bar =  5;

console.log(foo.bar);

这还意味着我们可以将它们存储在这样的数组中:

function foo () {console.log('test')};

let arr = [foo];   //stores a reference of the function foo

arr[0]()  // access the reference and execute it

我们可以将引用(要放置在内存中的指针)存储在数组中,以便稍后可以使用()运算符调用该函数

希望这会进一步澄清它;)

答案 2 :(得分:0)

// First Method/Function
function messageOne()
{
  console.log("Inside First Method !")
}
// Second Method/Function
function messageTwo()
{
  console.log("Inside Second Method !")
}

// A List which stores methods reference
var list = {"one":messageOne,"two":messageTwo}

// Call Each methods/Function from list
list["one"]()
list["two"]()