在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 ,它是最接近的匹配。