我找不到这个小代码片段在 IE8 中不起作用的原因,
var a = {"ff": "test"};
eval('('+a+')');
我收到错误
']' 预期的”。
当连接对象a
以形成 eval'd 字符串的一部分时,a.toString()
将调用[object Object]
. 您想要的是{"ff": "test"};
连接到 eval'd 字符串中,因此您需要使用它JSON.stringify()
来实现这一点。
尝试这个:
eval('('+JSON.stringify(a)+')');
或者,您也可以在第一行的对象声明周围加上引号:
var a = '{"ff": "test"}';
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);