eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。
如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
以上实例输出结果:
Tmiracle
172***0275@qq.com
eval() 是一个危险的函数,它使用与调用者相同的权限执行代码,所以尽可能的不要去使用它,以防被其他人员植入恶意代码,相似的 Function 就不容易被攻击。尽量使用 Function:
Function('"use strict";return (' + obj + ')')();
eval(obj); // 不建议使用
行百道
143***9326@qq.com
eval() 函数里面如果放一个函数需要使用 () 括起来。
let x=eval(`function parse(){console.log("test");}`); console.log(x); 上面代码没有使用 () 将 eval() 函数中的函数括起来,会报错 x undefined; let x=eval(`(function parse(){console.log("test");})`); console.log(x); 上面代码使用 () 将 eval() 函数中的函数括起来,正常运行。行百道 行百道 143***9326@qq.com3年前 (2020-05-17)
上面代码没有使用 () 将 eval() 函数中的函数括起来,会报错 x undefined;
let x=eval(`(function parse(){console.log("test");})`); console.log(x); 上面代码使用 () 将 eval() 函数中的函数括起来,正常运行。行百道 行百道 143***9326@qq.com3年前 (2020-05-17)
Blue S. Liu
yir***liu2008@outlook.com
回复 @行百道 。
这里之所以报错 x undefined 是因为 eval 中字符串 `function parse(){console.log("test");}` 转为 js 代码运行为:
function parse(){ console.log("test"); 这是运行了一个定义函数 parse() 的代码,这样 eval 的返回值就是 undifined 了。 只有加上括号,这才是一个严格的表达式。 然而即使是在严格模式下 var a = function parse(){console.log("test")}; 这样的代码也不报错,已亲测。Blue S. Liu Blue S. Liu yir***liu2008@outlook.com2年前 (2021-07-09)
只有加上括号,这才是一个严格的表达式。