先来做一道题,请说出打印结果
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类型的属性便于运算,方便定位内存地址,但String类型的属性无序,查找速度不如Number。

文章讲述了JavaScript中对象属性遍历顺序并非按照定义的顺序,而是浏览器基于内存管理策略,将Number类型的属性提前并按升序排列,以提高运行效率,因为Number属性利于运算和内存地址定位,而String类型则相对较慢。
403

被折叠的 条评论
为什么被折叠?



