一、eval的基本概念
eval会将传入的字符串当作JS代码来执行,返回值是执行的结果,比如:
eval('2 + 2') //4
如果传入的参数不是字符串,eval会将参数原样返回:
eval(new String("2 + 2")) //返回一个包含"2+2"的字符串对象 String {"2 + 2"}
二、eval的实际用处
- 将字符串解析成对象
var str = JSON.stringify({a:1})
eval(str) // Uncaught SyntaxError: Unexpected token ':'
eval("(" + str + ")") // {a: 1}
eval(str)会报语法错误,是因为eval把传入的字符串参数"{"a":1}"当作表达式来求值,因为{"a":1}不是一个合法的表达式,因此会报出语法错误。JS中的表达式都有哪些类型,详见
表达式和运算符developer.mozilla.org