JavaScript eval() 函数
JavaScript 全局函数定义和用法
eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。
如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
语法
eval(string)
参数 | 描述 |
---|---|
string | 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 |
浏览器支持
函数 | |||||
---|---|---|---|---|---|
eval() | Yes | Yes | Yes | Yes | Yes |
实例
实例
执行JavaScript代码或表达式:
eval("x=10;y=20;document.write(x*y)");
document.write("<br>" + eval("2+2"));
document.write("<br>" + eval(x+17));
以上实例输出结果:
200
4
27
4
27
尝试一下 »
JavaScript 全局函数
Tmiracle
172***[email protected]
eval() 是一个危险的函数,它使用与调用者相同的权限执行代码,所以尽可能的不要去使用它,以防被其他人员植入恶意代码,相似的 Function 就不容易被攻击。尽量使用 Function:
代替
Tmiracle
172***[email protected]
行百道
143***[email protected]
eval() 函数里面如果放一个函数需要使用 () 括起来。
上面代码没有使用 () 将 eval() 函数中的函数括起来,会报错 x undefined;
上面代码使用 () 将 eval() 函数中的函数括起来,正常运行。
行百道
143***[email protected]
Blue S. Liu
yir***[email protected]
回复@行百道。
这里之所以报错 x undefined 是因为 eval 中字符串 `function parse(){console.log("test");}` 转为 js 代码运行为:
这是运行了一个定义函数 parse() 的代码,这样 eval 的返回值就是 undifined 了。
只有加上括号,这才是一个严格的表达式。
然而即使是在严格模式下 var a = function parse(){console.log("test")}; 这样的代码也不报错,已亲测。
Blue S. Liu
yir***[email protected]