gpt4 book ai didi

Firefox 与其他浏览器中的 Javascript 自动排序

转载 作者:行者123 更新时间:2023-11-28 11:23:58 24 4
gpt4 key购买 nike

最近我在 Firefox 中发现了这种奇怪的行为:

此代码自动对属性进行排序:

var an_obj = { "4": "d", "1": "a", "2": "c"};
alert(Object.keys(an_obj)); // will alert "1, 2, 4"

虽然这个不是:

var value2 = {"1003":1, "1001":2, "1000":3};
alert(Object.keys(value2));// will alert "1003, 1001, 1000"

任何大于 1000 的数字在 Firefox 中都会有不同的行为,而其他浏览器(Chrome、IE11)将按照预期的大于 1000 的自动排序数字运行。

我认为这是 FireFox 中的一个错误,我错了吗?

更新1

这使得同一 FireFox 实现中的顺序“不可预测”。我可以理解根本没有对值进行排序或根据一个标准进行排序,但在“任意”数字之后不会表现出“不可预测”的行为。

最佳答案

这不是一个错误。对象不保证其属性的任何顺序,并且在某些情况下不应依赖 Object.keys 的任何顺序。

§15.2.3.14 ECMAScript 5 standard中有说明关于Object.keys

If an implementation defines a specific order of enumeration for the for-in statement, that same enumeration order must be used in step 5 of this algorithm.

这意味着 for-in 语句和 Object.keys 的任何排序完全取决于实现。

关于Firefox 与其他浏览器中的 Javascript 自动排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027971/

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