有没有办法用动态名称处理javascript函数?

时间:2020-06-08 05:49:42

标签: javascript python function variables ecmascript-6

我想像这样的代码那样以动态方式在JavaScript代码中使用函数。

const function1 = (param) => {
    return "AA" + param
}
const function2 = (param) => {
    return "BB" + param
}
const function3 = (param) => {
    return "CC" + param
}

for (let i=1; i < 4; i++) {
    // call function1, 2, 3 with i
} 

我在python中看到了类似的情况。

note1 = "note1"
note2 = "note2"
note3 = "note3"

for i in range(1, 4):
    print(vars()[f"note{i}"])

像这种python案例一样,有没有一种方法可以用动态名称处理javascript变量或函数?

1 个答案:

答案 0 :(得分:2)

您可以这样做:

在非严格模式下在任何函数之外创建的任何函数都将变为默认的this(窗口)。因此,您可以以window[ propertyName ]的身份访问它。但是,污染窗口对象是一种不好的做法。因此,更好的选择是将这些函数包装在自定义对象中,然后使用相同的语法访问函数。

const function1 = (param) => {
    return "AA" + param
}
const function2 = (param) => {
    return "BB" + param
}
const function3 = (param) => {
    return "CC" + param
}


for (let i=1; i < 4; i++) {
    window[`function${i}`](i);
}

参考: