JavaScript eval() 函数
定义和用法
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法
eval(string)
说明
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
抛出
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
使用
var str = "5+20"; alert(str); //5+20 alert(eval(str)); //25 var str = 5+"+20"; alert(str); //5+20 alert(eval(str)); //25 var str = "confirm('abcde')"; alert(str); //confirm('abcde') alert(eval(str)); //确认对话框 abcd
eval() 函数可编译并执行任何 JavaScript 代码。
严重:JSON 解析器 eval() 安全问题说明,大家都知道eval()函数就是evaluation:它的特点如果遇到运算符(/、*、-、+、>>等),它会直接计算结果.
var txtJson = '{' + '"name": "js",' + '"date": 2018-11-1' + '}'; //利用函数 eval() 转换成JSON对象 var obj = eval ("(" + txtJson + ")"); //输出date alert("cd_name:" + obj.date); //2006