2013-02-24 53 views
0

我认为jquery $ .parseJSON可以将jsons字符串转换为JavaScript对象,为什么有人仍然一起使用eval($。parseJSON)?为什么一起使用eval和parsonJson?

+0

你的意思是'eval($。parseJSON(x))'?这只是愚蠢的 - eval需要一个字符串,而不是JavaScript对象。只有当x包含json'“alert('foo')”' – Eric 2013-02-24 08:50:46

回答

0

似乎是多余的。

jQuery parseJSON函数在支持它的浏览器中使用本机JSON。根据Douglas Crockford(原始JSON规范的作者),“解析方法使用eval方法进行解析,用多个正则表达式来防护它,以防止意外的代码执行危害。” 如果浏览器本身不支持JSON,jQuery使用new Function构造函数返回解析的对象,这与eval()相当,并带有一些范围区别。

+0

时,它才有意义另外,由于eval()期望为字符串参数,并且$ .parseJSON()看起来像eval($。parseJSON()返回对象。 – lxgreen 2013-02-24 09:20:44

+0

实际上,在对象/数组上调用'eval'只是返回对象/数组 - 因此它是有效的。 – 2013-02-24 13:42:46

+0

@Idan:10倍,很高兴知道。 – lxgreen 2013-02-24 13:46:39

相关问题