如何使用 JavaScript 根据存储在字符串中的函数名称调用函数?


我们将使用 eval() 函数根据存储在字符串中的函数名称来调用函数。eval() 函数将字符串评估为 JavaScript 代码。这允许我们通过将包含函数名称的字符串作为参数传递给 eval() 函数来调用该函数。

示例

以下是如何使用 JavaScript 根据存储在字符串中的函数名称调用函数的完整工作示例:

// Define the function that we want to call
function sayHello() {
   console.log("Hello, world!");
}

// Store the function name as a string
let functionName = "sayHello";

// Use the `eval()` function to convert the string to a function call
eval(functionName + "()");
  • 在上面的示例中,我们首先定义了一个名为 sayHello() 的简单函数,它只是将“Hello, world!”记录到控制台。接下来,我们定义一个名为 functionName 的变量,它存储字符串“sayHello”,这是我们要调用的函数的名称。

  • 最后,我们使用 eval() 函数将字符串 functionName 转换为函数调用,方法是将其与调用函数所需的括号 () 连接起来。

  • eval() 函数是 JavaScript 中一个功能强大但可能存在危险的功能,它允许您将字符串评估为 JavaScript 代码。通常不建议在生产代码中使用 eval(),因为它可以用来执行任意代码,这可能存在安全风险。

替代方法

值得一提的是,还有更安全的方法可以根据存储在字符串中的函数名称调用函数,而无需使用 eval,例如:

let functionName = "sayHello";
let functionObj = window[functionName];
functionObj();

或者

let functionName = "sayHello";
let functionObj = window['sayHello'];
functionObj();

这些替代方法比使用 eval 更安全,因为它们不会执行任意代码,而是通过其名称直接引用函数。

更新于: 2023年2月16日

9K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告