JavaScript - property enumeration order
in JS on 공부, Javascript
const obj1 = {
c: 1,
2: 2,
a: 3,
0: 4,
b: 5,
1: 6
}
const keys1 = []
for(const key in obj1){
keys1.push(key)
}
keys1 // 0 1 2 c a b 순으로 나온다. 숫자가 먼저 오고, 작은 수에서 큰 수의 순서로. 문자열은 입력된 순서 ㅡ대로
근데 "02", '10', '01', '2' // 2 10 02 01 순으로 들어간다.
숫자인데 첫글자가 0이 아닌 경우는 숫자로 인식을 한다.
아닌 경우는 의도적으로 그렇게 입력한 문자열로 인식을 해서 입력 순서 그대로 들어간 것이다.
객체의 열거 순서 : 숫자 asc. 문자열 입력순서. symbol 입력순서.
근데 이런 열거 순서를 엄격히 지키는 애들은 Es6에 추가된 애들이다.
- object.getOwnPropertyNames()
- Reflect.ownKeys()
- Obejct.assign()
아래처럼
- for in
- Object.keys()
- JSON.stringify()
얘네들은 보장을 안해준다.