網(wǎng)頁設(shè)計作業(yè)報告范文成都網(wǎng)站優(yōu)化
?eval函數(shù)的定義:
eval() 函數(shù)計算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行。
如果參數(shù)是一個表達式,eval() 函數(shù)將執(zhí)行表達式。如果參數(shù)是Javascript語句,eval()將執(zhí)行 Javascript 語句。
let a1 = 10;
let a2 = 20;
let calculate1 = 'a1 + a2';
console.log(eval(calculate1)) // 30
這個一眼就看到eval函數(shù)是將字符串中的值作為js代碼來運行了,所以得出來是30。
但是如果表達式是后端傳遞給我們的,并且參與運算的是 對象類型那么就需要將后端傳遞給我們的字符串先轉(zhuǎn)變?yōu)槟0遄址?#xff0c;也就是兩邊增加一個? ``??此時在運行的時候他只會將${}中的值解析出來,就停止運算了,需要再調(diào)用一次eval 來進一步運算就能得到想要的值了
下邊這種做法是當計算的是對象中的屬性值并且運算方法是后端定義的的時候的用法
let obj1 = {num1:30,num2:40
}
let calculate2 = '${obj1.num1} + ${obj1.num2}';
//先將字符串轉(zhuǎn)變?yōu)槟0遄址?calculate2 = '`' + calculate2 + '`'
console.log(eval(calculate2)) // 30 + 40
//此時只是將js表達式運行出來了,并沒有將做下一步運算,我們重新再調(diào)用一次 eval函數(shù)
let sum = eval(calculate2) // 70