munifico.github.io

munifico's anything page

Follow me on GitHub

for…in

그 동안은 객체 프로퍼티를 나열할 때, for…in을 주로 사용했습니다. 문자열 프로퍼티가 몇 개 있고 심볼 프로퍼티가 하나 있는 객체가 있다고 합시다.

const SYM = Symbol();
const o = {a:1, b:2, c:3, [SYM]:4}
for(let prop in o) {
    if (!o.hasOwnProperty(prop)) continue;
    console.log(`${prop} : ${o[prop]}`)
}
// a : 1
// b : 1
// c : 1

상당히 단순해 보입니다만, hasOwnProperty가 무슨 의미인지 궁금한 독자도 있을 겁니다. hasOwnProperty는 이 장 후반에 알게 될 상속된 프로퍼티가 for…in에 나타날 위험을 제거하기 위해 사용합니다. 이 예제에서는 생략하더라도 아무 차이도 없습니다. 하지만 다른 타입의 객체, 특히 다른 사람이 만든 객체의 프로퍼티를 나열하다 보면 예상치 못한 상황이 생길 수 있으므로 hasOwnProperty를 쓰는 습관을 들이길 권합니다. hasOwnProperty가 왜 중요한지, 생략해도 안전할 때는 언제인지는 곧 알게 됩니다.

for…in 루프에는 키가 심볼인 프로퍼티는 포함되지 않습니다.

CAUTION for…in을 배열에 사용할 수도 있겠지만, 그리 좋은 생각은 아닙니다. 배열에는 일반적인 for 루프나 forEach를 사용하십시오.


이전 : 프로퍼티 나열
다음 : Object.keys
목차