我可以将JavaScript函数存储在数组中吗?

Emr*_*mre 26 javascript arrays function

如何在具有命名属性的数组中存储函数,因此我可以调用

FunctionArray["DoThis"]
Run Code Online (Sandbox Code Playgroud)

甚至

FunctionArray[integer]
Run Code Online (Sandbox Code Playgroud)

注意:我不想使用eval.

Anu*_*rag 32

要记住的重要一点是函数是JavaScript中的第一类对象.因此,您可以将它们作为参数传递,将它们用作对象值等等.数组中的值只是其中的一个示例.

请注意,我们不是将函数存储在数组中,尽管我们可以这样做并使用数字索引访问它们.我们将它们存储在一个常规对象中,该对象由我们想要访问该函数的名称键入.

var functions = {
    blah: function() { alert("blah"); },
    foo: function() { console.log("foo"); }
};
Run Code Online (Sandbox Code Playgroud)

打电话给

functions.blah();
Run Code Online (Sandbox Code Playgroud)

要么

functions["blah"]();
Run Code Online (Sandbox Code Playgroud)


med*_*iev 13

你想要一个对象文字,而不是一个数组.

x = { 'dothis': function() { alert('hi'); } };
Run Code Online (Sandbox Code Playgroud)

宾语

x['dothis']()
Run Code Online (Sandbox Code Playgroud)

您也可以动态调用

y = 'dothis';
x[y]()
Run Code Online (Sandbox Code Playgroud)

静态/硬编码调用:

x.dothis()
Run Code Online (Sandbox Code Playgroud)

如果你确实想要一个数组:

x = [function(){alert('hi');}][0]()
Run Code Online (Sandbox Code Playgroud)


小智 6

你实际上可以做到这一点。只需在数组外声明它,就像这样......

const your_function = function(){ console.log("I am your function") }

const group = [0, "lizard", false, your_function()]

group[3]
Run Code Online (Sandbox Code Playgroud)

您也可以更改它的调用位置,如果您想...

const your_function = function(){ console.log("I am your function") }

const group = [0, "lizard", false, your_function]

group[3]()
Run Code Online (Sandbox Code Playgroud)

函数命名错误:/ sry