gpt4 book ai didi

javascript - 无法理解 jQuery.parseJSON JSON.parse 回退

转载 作者:搜寻专家 更新时间:2023-11-01 04:20:11 24 4
gpt4 key购买 nike

这是 source of $.parseJSON

function (data) {
if (typeof data !== "string" || !data) {
return null;
}

// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim(data);

// Attempt to parse using the native JSON parser first
if (window.JSON && window.JSON.parse) {
return window.JSON.parse(data);
}

// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if (rvalidchars.test(data.replace(rvalidescape, "@").replace(rvalidtokens, "]").replace(rvalidbraces, ""))) {

return (new Function("return " + data))();

}
jQuery.error("Invalid JSON: " + data);
}

我无法理解以下回退

return (new Function("return " + data))();

还有(这个不在 jQuery 中)

return (eval('('+ data + ')')

我想知道这些事情

  1. 这个解析回退是如何工作的?
  2. 为什么不在回退中使用 eval? (不比new Function()快吗)

最佳答案

new Function() 允许您将函数作为字符串传递。

在这种情况下,函数被创建为简单地返回由 json 字符串描述的对象。由于 json 是一个有效的对象字面量,这个函数只返回在 json 中定义的对象。立即调用新函数,返回该对象。

就性能而言,一些快速谷歌搜索发现声称 new Function()eval 更快,尽管我自己没有测试过。

关于javascript - 无法理解 jQuery.parseJSON JSON.parse 回退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6996673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com