gpt4 book ai didi

javascript - 由于 JavaScript 不保证对象中的属性顺序,因此 JSON.stringify() 的实际行为如何?

转载 作者:行者123 更新时间:2023-11-30 15:01:46 24 4
gpt4 key购买 nike

properties order in objects is not guaranteed in JavaScript ,如何JSON.stringify()实际行为?

  1. 以下是否总是正确的(同一对象)?

const o = { a: 1, b: 2 };
console.log(JSON.stringify(o) === JSON.stringify(o));

  1. 以下是否总是正确的(深度相等的对象,相同的键声明顺序)?

console.log(JSON.stringify({ a: 1, b: 2 }) === JSON.stringify({ a: 1, b: 2 }));

  1. 如何使以下为真(深度相等的对象,不同的键声明顺序)?

console.log(JSON.stringify({ a: 1, b: 2 }) === JSON.stringify({ b: 2, a: 1 }));

最佳答案

我查看了 JSON.stringify 的 ECMAScript 标准:http://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3

这似乎提供了很多信息:

For each element P of K.

Let strP be the result of calling the abstract operation Str with arguments P and value.
If strP is not undefined
Let member be the result of calling the abstract operation Quote with argument P.
Let member be the concatenation of member and the colon character.
If gap is not the empty String
Let member be the concatenation of member and the space character.
Let member be the concatenation of member and strP.
Append member to partial.

最后一步中的“附加”强烈暗示结果是按来源排序的,我可以确认您的代码断言在 Chromium 和 Firefox 上都通过了。

编辑:对于“P of K”,这可能也相关:

The ordering of the Strings should be the same as that used by the Object.keys standard built-in function.

只要比较保存在一个浏览器中,您的断言似乎就是真的。

关于javascript - 由于 JavaScript 不保证对象中的属性顺序,因此 JSON.stringify() 的实际行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46444607/

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