JS中对象里key的顺序

154
const negOne = -1;
const negTwo = -2;
const object1 = {
  [Symbol("first")]: true,
  [negOne]: "aa",
  3: "aa",
  1: "aa",
  2: "aa",
  "03": "aa",
  1.3: "aa",
  "-3": "aa",
  [negTwo]: "aa",
  [Symbol("second")]: true,
};
object1[-4] = "aa";
for (key of Reflect.ownKeys(object1)) {
  console.log(key);
}

image.png

  1. 数字(自然数,即0,1,2,3) 按升序 (细节:下标上是一个无符号的32bit的数,即最大是 2^32−1 )

  2. 字符串按插入的时间顺序(细节:小数,负数等都当做字符串来看待)

  3. symbols 都会统一放在最后面 按按插入时顺序

关于下标的细节请参考 speakingjs.com/es5/ch18.ht…