日期:2014-05-16  浏览次数:20361 次

为什么用eval解析json字符串要加括号,否则就报语法错误?

var jsonStr = '{"a":1}';
var jsonObj = eval(josnStr);


为什么这样会报语法错误?一直都在被动接受要eval("("+jsonStr+")"),就是不明白为什么?

var a = eval("1+1");

这样就没问题,不报错。

为什么?百思不得骑姐!
eval

------解决方案--------------------
为了让最外层的{}不要被eval理解成为Javascript的代码块的开始.而是理解成为一个对象字面量
你写成这样也是一样的
var jsonStr = '{"a":1}';
eval('var jsonObj = '+jsonStr);
alert(jsonObj.a);