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更安全,因为它们不会执行任意代码,而是直接引用函数的名称。