我們給定了一個(gè)字符串,需要將其轉(zhuǎn)換為 JavaScript 中的函數(shù)。有時(shí),我們得到字符串形式的數(shù)學(xué)或函數(shù)表達(dá)式,執(zhí)行該表達(dá)式需要將字符串轉(zhuǎn)換為函數(shù)表達(dá)式。在本教程中,我們將學(xué)習(xí)將給定字符串轉(zhuǎn)換為函數(shù)或數(shù)學(xué)表達(dá)式的不同方法。
使用 eval() 方法
eval() 方法將表達(dá)式作為參數(shù)并對表達(dá)式求值。例如,如果我們將“2 + 2”字符串作為 eval() 方法的參數(shù)傳遞,則在計(jì)算數(shù)學(xué)表達(dá)式 2+2 時(shí),它會返回 4。
它還像數(shù)學(xué)表達(dá)式一樣計(jì)算函數(shù)表達(dá)式。
語法
用戶可以按照下面的語法使用 eval() 方法將字符串轉(zhuǎn)換為 JavaScript 中的函數(shù)。
eval("var func = () => { output.innerHTML = 'Hello Users!'; }";);
func();
登錄后復(fù)制
在上面的語法中,我們將函數(shù)字符串作為 eval() 方法的參數(shù)傳遞。
示例 1
在下面的示例中,我們創(chuàng)建了包含函數(shù)表達(dá)式的字符串。函數(shù)表達(dá)式在網(wǎng)頁上打印消息。
之后,我們將字符串作為 eval() 方法的參數(shù)傳遞,然后我們就像調(diào)用普通函數(shù)一樣執(zhí)行了 func() 函數(shù)。
func() 函數(shù)提供與普通函數(shù)相同的輸出。
<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>
登錄后復(fù)制
示例 2
在下面的例子中,我們創(chuàng)建了對象,對象的 getHeight 屬性包含字符串格式的函數(shù)
我們使用 eval() 方法來計(jì)算 getHeight 屬性的字符串值,并將函數(shù)字符串轉(zhuǎn)換為表達(dá)式后再次將其存儲在 getHeight 屬性中。
之后,我們執(zhí)行了 getHeight() 函數(shù),該函數(shù)返回我們存儲在 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>
登錄后復(fù)制
使用函數(shù)構(gòu)造函數(shù)
Function() 構(gòu)造函數(shù)允許我們從字符串創(chuàng)建一個(gè)函數(shù)。 Function() 構(gòu)造函數(shù)可以帶 N 個(gè)參數(shù)。 Function constructor()的前N-1個(gè)參數(shù)作為要創(chuàng)建的函數(shù)的參數(shù),第N個(gè)參數(shù)為函數(shù)表達(dá)式
語法
用戶可以按照以下語法使用 Function() 構(gòu)造函數(shù)從字符串創(chuàng)建函數(shù)。
let func = new Function(expression);
登錄后復(fù)制
在上述語法中,func 是使用 Function() 構(gòu)造函數(shù)創(chuàng)建的。表達(dá)式是包含函數(shù)表達(dá)式的字符串。
示例 3
在下面的示例中,我們創(chuàng)建了表達(dá)式字符串。我們還在表達(dá)式字符串中使用 eval() 方法評估數(shù)學(xué)表達(dá)式。
之后,我們像普通函數(shù)一樣調(diào)用 func() 函數(shù),用戶可以觀察輸出
<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>
登錄后復(fù)制
示例 4
在下面的示例中,我們已將多個(gè)參數(shù)傳遞給 Function() 構(gòu)造函數(shù)。前三個(gè)參數(shù)用作作為第四個(gè)參數(shù)傳遞的函數(shù)表達(dá)式的參數(shù)。
我們打印函數(shù)表達(dá)式中的參數(shù)值。在輸出中,用戶可以看到它打印了參數(shù)的默認(rèn)值,因?yàn)槲覀冊谡{(diào)用 concatString() 函數(shù)時(shí)沒有傳遞任何參數(shù)。
<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>
登錄后復(fù)制
在本教程中,我們學(xué)習(xí)了使用兩種不同的方法將字符串轉(zhuǎn)換為函數(shù)表達(dá)式。在第一種方法中,我們使用了 eval() 方法,我們可以使用它來計(jì)算 JavaScript 中的任何表達(dá)式。
在第二種方法中,我們使用了 Function 構(gòu)造函數(shù),它將函數(shù)參數(shù)和函數(shù)表達(dá)式作為參數(shù)來創(chuàng)建一個(gè)新函數(shù)。
以上就是如何在 JavaScript 中將字符串轉(zhuǎn)換為函數(shù)?的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!






