eval在IE8中不起作用

时间:2013-03-28 13:00:37

标签: javascript

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

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

我收到错误

  

']'预期'。

2 个答案:

答案 0 :(得分:0)

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

试试这个:

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

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

var a = '{"ff": "test"}';

答案 1 :(得分:0)

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

评估为:

([object Object])

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

var a_to_json = JSON.stringify(a);
var a_from_json = JSON.parse(a_to_json);