如何在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建構函式,它將函式引數和函式表示式作為引數來建立一個新函式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP