是否可以将函数命名为数组[x]?
我寻找一种解决方案来在 for 循环中加载不同的函数。 我将像这个函数名称一样声明函数。然后我将调用带有数组 = ["name", ...] 的 foor 循环中的函数;
function functionname["aaa"]() {
console.log("is for aaa");
}
array = ["aaa", "bbb", "ccc"];
for (var i = 0; i < array.length; i++) {
functionname[array[i]]();
}
您可以将函数分配为对象的成员:
let myObj = {
"aaa": function () {
console.log("is for aaa");
},
"bbb": function () {
console.log("is for bbb");
}
};
myObj["ccc"] = function () {
console.log("is for ccc");
};
array = ["aaa", "bbb", "ccc"];
for (var i = 0; i < array.length; i++) {
myObj[array[i]]();
}
因此,如果我理解正确,您希望遍历函数数组,调用位于循环中当前迭代索引处的数组中的函数。
我不知道您的目标是什么,但这里有一种可能的解决方案,尽管有几种方法可以解决这个问题:
const aaa = () => console.log('aaa');
const bbb = () => console.log('bbb');
const ccc = () => console.log('ccc');
const array = [aaa, bbb, ccc];
for (var i = 0; i < array.length; i++) {
array[i]();
}
您可以创建函数的查找表。
let functionname = {
"aaa": () => {
console.log("is for aaa")
},
"bbb": () => {
console.log("is for bbb")
}
};
不带箭头函数:
var functionname = {
"aaa": function aaa() {
console.log("is for aaa");
},
"bbb": function bbb() {
console.log("is for bbb");
}
};
试试这个:
以这种方式执行此操作,否则需要使用 eval 或函数构造函数等函数来解析字符串。
function commonfunction(name){
console.log('is for '+name);
}
var array = ["aaa", "bbb", "ccc"];
array = array.map((name)=>()=>commonfunction(name));
array.forEach((_newFunction)=>_newFunction());