在jQuery中eval()的等价物是什么?

什么相当于在jQuery中调用eval('('+responseText+')') ? 我也明白eval不是那么安全,所以我在jQuery中寻找更安全,更惯用的东西。

你真的想要执行Javascript代码(在某种程度上总是不安全),或者你是否试图将JSON从字符串解析为对象?

如果是前者,eval()仍然是你最好的选择。

如果是后者,jQuery将作为AJAX请求的一部分为您执行此操作 ,或者您可以使用专用的JSON插件在字符串和对象之间进行转换,而不会有执行任意代码的风险。

a)加载和执行JS代码:

 $.getScript( url, [ success(data, textStatus) ] ) 

见http://api.jquery.com/jQuery.getScript/

b)解析JSON:

 $.parseJSON( json ) 

见http://api.jquery.com/jQuery.parseJSON/

我不认为没有浏览器差异。 我今天刚跑过一个。 如果您评估一个在不存在的对象上调用方法的字符串,则Firefox返回undefined,IE6会抛出TypeError。

根据设计,jQuery着手改进浏览器实现。 由于不同浏览器实现eval的方式没有问题,因此jQuery无法解决这个问题。

$.globalEval()

http://api.jquery.com/jQuery.globalEval/

文档说它的行为与eval()完全不同,但如果你想通过jQuery传递你的evals ,它是最接近的匹配。