0

我找不到这个小代码片段在 IE8 中不起作用的原因,

var a = {"ff": "test"};
eval('('+a+')');

我收到错误

']' 预期的”。

4

2 回答 2

0

当连接对象a以形成 eval'd 字符串的一部分时,a.toString()将调用[object Object]. 您想要的是{"ff": "test"};连接到 eval'd 字符串中,因此您需要使用它JSON.stringify()来实现这一点。

尝试这个:

eval('('+JSON.stringify(a)+')');

或者,您也可以在第一行的对象声明周围加上引号:

var a = '{"ff": "test"}';
于 2013-03-28T13:03:43.733 回答
0
var a = {"ff": "test"};
eval('('+a+')');

这被评估为:

([object Object])

这显然不是有效的 JavaScript。如果要保留数据结构,可以使用JSON.stringify()and JSON.parse()

var a_to_json = JSON.stringify(a);
var a_from_json = JSON.parse(a_to_json);
于 2013-03-28T13:07:24.527 回答