先来做一道题,请说出打印结果
const obj = {
a2: 'aaa',
2: 'aaa',
1: 'aaaa',
a1: 'aaa',
}
for(let key in obj){
console.log(key)
}
结果: 1 2 a2 a1
属性的书写顺序不一定就是对象遍历时的顺序。这涉及到了浏览器对于内存的管理。
因为JS会对对象的属性进行处理,会把所有Number类型的属性提前,然后将Number类型的属性按照升序排序。
为什么这么做?
浏览器为了提高运行的效率,因为Number类型的属性便于运算,方便定位内存地址,但String类型的属性无序,查找速度不如Number。