此链接向您显示jQuery (new Function("return " + data))();用于旧版浏览器,以解析JSON字符串而不是eval().
这有什么好处?如果JSON字符串不安全怎么办?
可能重复:
jQuery使用(new Function("return"+ data))(); 而不是eval(数据); 解析JSON,为什么?
给定一个表示有效JSON字符串的字符串,这两种解析方法之间是否存在差异:
var str, obj;
str = '{"prop":"value"}';
// method 1:
obj = eval( '(' + str + ')' );
// method 2:
obj = ( new Function( 'return (' + str + ');' ) )();
Run Code Online (Sandbox Code Playgroud)
我注意到jQuery使用第二种方法来解析JSON字符串(在没有内置JSON解析器的环境中).我想知道他们为什么不使用第一种方法.为什么要创建一个函数对象并在可以使用时调用它eval()?