eval()函数的用法,计算字符串中的值,模板字符串进行计算
eval函数的定义:
eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。
如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
let a1 = 10;
let a2 = 20;
let calculate1 = 'a1 + a2';
console.log(eval(calculate1)) // 30
可以看到eval函数是将字符串中的值作为js代码来运行了,所以得出来是30。
但是如果表达式是后端传递给我们的,并且参与运算的是 对象类型那么就需要将后端传递给我们的字符串先转变为模板字符串,也就是两边增加一个 `` 此时在运行的时候他只会将${}中的值解析出来,就停止运算了,需要再调用一次eval 来进一步运算就能得到想要的值了
下边这种做法是当计算的是对象中的属性值并且运算方法是后端定义的的时候的用法。因为后端传递给我们的是一个字符串。
let obj1 = {
num1:30,
num2:40
}
let calculate2 = '${obj1.num1} + ${obj1.num2}';
//先将字符串转变为模板字符串
calculate2 = '`' + calculate2 + '`'
console.log(eval(calculate2)) // 30 + 40
//此时只是将js表达式运行出来了,并没有将做下一步运算,我们重新再调用一次 eval函数
let sum = eval(calculate2) // 70