【发布时间】:2018-06-02 06:01:54
【问题描述】:
我已经检查了这个页面:mozilla documentation
我不明白为什么索引 0 带有:
const object3 = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(object3)[0]);
// expected output: Array ["100", "a"] <== i thought of this
相反,文档说你得到了:
// expected output: Array ["2", "b"]
谁能解释一下为什么?
【问题讨论】:
-
根据规范,属性名称的排序不可靠。他们经常碰巧在现代 JS 解释器中,但你不能指望它。在这种情况下,可能最后看到 100 的属性,因为 100 大于 2 和 7。
-
对象是无序的。或者,它们不需要保持其属性的一致或可预测的顺序。引擎只需要保证,在给定的循环中,每个属性只被访问一次。 – Does JavaScript Guarantee Object Property Order?
-
根据文档,您可以尝试使用 for..in 循环来控制台记录它以了解顺序。但是,不能保证对象中键的顺序
标签: javascript object documentation