如何在JavaScript中將字串轉換為函式?


我們得到一個字串,需要將其轉換為JavaScript中的函式。有時,我們以字串的形式獲得數學表示式或函式表示式,執行該表示式需要將字串轉換為函式表示式。在本教程中,我們將學習將給定字串轉換為函式或數學表示式的不同方法。

使用eval()方法

eval()方法將表示式作為引數並計算表示式。例如,如果我們將字串“2 + 2”作為eval()方法的引數,則它返回4,因為它計算數學表示式2+2。

它也像計算數學表示式一樣計算函式表示式。

語法

使用者可以按照以下語法使用eval()方法將字串轉換為JavaScript中的函式。

eval("var func = () => { output.innerHTML = 'Hello Users!'; }";);
func(); 

在上面的語法中,我們將函式字串作為eval()方法的引數。

示例1

在下面的示例中,我們建立了包含函式表示式的字串。函式表示式在網頁上列印訊息。

之後,我們將字串作為eval()方法的引數,然後像呼叫普通函式一樣呼叫func()函式。

func()函式給出的輸出與普通函式相同。

<html>
<body>
   <h2>Using the <i> eval() </i> method to convert a string into the function expression in JavaScript. </h2>
   <div id = "output"> </div>
</body>
<script>
   let output = document.getElementById('output');
   let funcStr = "var func = () => { output.innerHTML = 'Hello Users!';}";
   eval(funcStr);
   func();
</script>
</html>

示例2

在下面的示例中,我們建立了物件,並且物件的getHeight屬性包含字串格式的函式

我們使用了eval()方法來計算getHeight屬性的字串值,並在將函式字串轉換為表示式後將其再次儲存在getHeight屬性中。

之後,我們執行了getHeight()函式,該函式返回我們儲存在height變數中的高度。

<html>
<body>
   <h2>Using the <i> eval() </i> method to convert a string into the function expression in JavaScript. </h2>
   <div id = "output"> </div>
</body>
<script>
   let output = document.getElementById('output');
   let object = {
      name: "Shubham",
      "getHeight": "function func() { return '6 Feet';}",
      age: 22,
   }
   object.getHeight = eval("(" + object.getHeight + ")");
   let height = object.getHeight();
   output.innerHTML += "The height is " + height + "<br/>";
</script>
</html>

使用Function建構函式

Function()建構函式允許我們從字串建立函式。Function()建構函式可以接受N個引數。Function建構函式的第一個N-1個引數用作要建立的函式的引數,而第N個引數是函式表示式

語法

使用者可以按照以下語法使用Function()建構函式從字串建立函式。

let func = new Function(expression); 

在上面的語法中,使用Function()建構函式建立func。表示式是一個包含函式表示式的字串。

示例3

在下面的示例中,我們建立了表示式字串。我們還使用eval()方法在表示式字串中計算數學表示式。

之後,我們像普通函式一樣呼叫func()函式,使用者可以看到輸出

<html>
<body>
   <h2>Using the <i> Function() </i> constructor to convert a string into the function expression in JavaScript. </h2>
   <div id = "output"> </div>
</body>
<script>
   let output = document.getElementById('output');
   let expression = "output.innerHTML += 'The value of 10 + 10 is ' + eval(10 + 10);";
   let func = new Function(expression);
   func();
</script>
</html>

示例4

在下面的示例中,我們向Function()建構函式傳遞了多個引數。前三個引數用作作為第四個引數傳遞的函式表示式的引數。

我們在函式表示式中列印引數值。在輸出中,使用者可以看到它列印了引數的預設值,因為我們在呼叫concatString()函式時沒有傳遞任何引數。

<html>
<body>
   <h2>Using the <i> Function() </i> constructor to convert a string into the function expression in JavaScript. </h2>
   <div id = "output"> </div>
</body>
<script>
   let output = document.getElementById('output');
   let expression = "output.innerHTML += 'The value of param1 + param2 + param3 is ' + param1 + param2 + param3;";
   let concatString = new Function("param1 = 'Welcome '", "param2 = 'To the '", "param3 = ' TutorialsPoint!'", expression);
   concatString();
</script>
</html>

在本教程中,我們學習了使用兩種不同的方法將字串轉換為函式表示式。在第一種方法中,我們使用了eval()方法,我們可以用它來計算JavaScript中的任何表示式。

在第二種方法中,我們使用了Function建構函式,它將函式引數和函式表示式作為引數來建立一個新函式。

更新於:2023年2月16日

3K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.