为什么eval在这里失败?

时间:2010-11-29 15:08:55

标签: javascript eval

0001: response
$[0] = [string] "{\"code\":200,\"id\":121}"
0001: eval(response)
SyntaxError: invalid label

有谁知道?

2 个答案:

答案 0 :(得分:14)

你必须将它包装在()中以触发表达式评估,如下所示:

eval("(" + response + ")")

You can test it out here


虽然更好的方法是本机JSON处理:

var result = JSON.parse(response);

只需将json2.js包含在较早的浏览器(< IE8)支持中,调用就是相同的......如果缺少全局JSON对象,它就会添加它。

答案 1 :(得分:4)

您需要将JSON字符串包装在括号中。

否则,{ ... }被解释为可执行语句块,而不是。

通过在括号中包围它,可以强制解释器将其解释为表达式。