JavaScript 如何使用字符串形式执行函数

JavaScript 如何使用字符串形式执行函数

在本文中,我们将看到如何使用字符串形式执行JavaScript函数。

例如:

function myFunction() {
    ...
}
const functionName ="myFunction";

在上面的代码中, functionName 是一个字符串,并且它的值是 “myFunction” 。现在我们需要使用 functionName 来运行函数 myFunction ,它也是一个字符串。所以在本文中,我们将看到如何解决这个问题。

有几种方式可以在你拥有函数名作为字符串时执行JavaScript函数。

方法1:使用eval()方法: eval()方法是JavaScript的一个强大但经常不推荐使用的特性,它允许你将字符串作为代码来执行。你可以使用eval()来执行JavaScript函数。

语法:

function myFunction() {
      ...
}
const functionName = "myFunction";
eval(functionName + "()"); 

例子: 在这个例子中,我们定义了一个名为greet的函数,它会将一个问候语记录到控制台,并且定义了一个名为functionName的变量,它的值是“greet”,也就是这个函数的名字。然后,我们使用eval()方法来执行这个函数,它构建了一个调用这个函数的代码字符串,并传入参数“Alice”。这样就会执行greet函数,并将输出“Hello, Alice!”记录到控制台。

Javascript

function greet(name) { 
      console.log(`Hello, {name}!`); 
} 
  
const functionName = "greet"; 
  
// Using eval() to execute the function 
eval(`{functionName}("Alice")`);

输出:

Hello, Alice!

方法2:使用window[]: 在浏览器环境中,您可以使用window[]语法来执行一个JavaScript函数,当您只有其名称作为一个字符串时。

语法:

function myFunction() {
    ...
}
const functionName = "myFunction";
window[functionName]();

示例: 在此示例中,我们定义了一个名为greet的函数,该函数将问候语记录到控制台上,并定义了一个名为functionName的变量,其值为”greet”,这是函数的名称。然后,我们使用window[functionName]通过函数名作为字符串访问该函数,并使用参数”Alice”调用它。这将导致执行greet函数,并将输出”Hello, Alice!”记录到控制台。

Javascript

function greet(name) { 
  console.log(`Hello, ${name}!`); 
} 
const functionName = "greet"; 
  
// Using window[] to execute the function 
window[functionName]("Alice");

输出:

Hello, Alice!

方法3:使用函数构造函数:

你可以使用函数构造函数创建一个新的函数对象,将函数名作为字符串传入,并调用该新函数对象。

语法:

function myFunction() {
    ...
}
const functionName = "myFunction";
const fn = new Function(`return ${functionName}()`);
fn();

示例: 在这个示例中,我们定义了三个变量:函数名称的值为“greet”,这是函数的名称;函数参数的值为“name”,这是函数的参数名称;函数体的值为“console.log(’Hello,’+ name +’!’);”,这是函数的主体部分。然后,我们使用Function构造函数动态地使用给定的参数和函数体创建一个新的函数,并将其存储在一个变量dynamicFunction中。

JavaScript

const functionName = "greet"; 
const functionArguments = "name"; 
const functionBody =  
    `console.log('Hello, ' + name + '!');`; 
  
// Using the Function constructor  
// to create and execute the function 
const dynamicFunction =  
    new Function(functionArguments, functionBody); 
dynamicFunction("John");

输出:

Hello, John!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程