자바스크립트에서 for...in 루프는 객체가 가진 모든 속성(property)을 하나씩 순회하며 반복 작업을 수행할 때 사용하는 반복문입니다. 배열이 아닌 객체의 키(key)를 대상으로 동작하기 때문에, 객체 내부를 탐색하거나 속성 목록을 확인할 때 매우 유용합니다.
기본 문법
for...in 루프의 기본 문법은 다음과 같습니다.
for (변수명 in 객체) {
실행할 문장 또는 코드 블록
}루프가 실행되는 동안 변수에는 객체의 각 속성 이름(키)이 순서대로 할당됩니다. 따라서 코드 블록 안에서는 해당 변수를 통해 현재 순회 중인 속성에 접근할 수 있습니다.
예제
아래 예제는 for...in 루프를 실제로 활용한 코드입니다. 웹 브라우저의 navigator 객체가 가진 모든 속성 이름을 화면에 출력합니다.
<html>
<body>
<script>
var aProperty;
document.write("Navigator 객체의 속성<br /> ");
for(aProperty in navigator) {
document.write(aProperty);
document.write("<br />");
}
document.write ("루프 종료!");
</script>
</body>
</html>코드 설명
위 예제의 동작 과정은 다음과 같습니다.
1. aProperty라는 변수를 선언하여 각 속성 이름을 담을 준비를 합니다.
2. navigator 객체를 대상으로 for...in 루프를 시작합니다.
3. 루프가 한 번 돌 때마다 aProperty에 navigator 객체의 속성 이름이 하나씩 저장됩니다.
4. document.write()를 통해 해당 속성 이름을 화면에 출력하고 줄바꿈을 추가합니다.
5. 모든 속성을 순회하면 루프가 종료되고 마지막 메시지가 출력됩니다.
for...in 루프 사용 시 주의사항
for...in 루프는 편리하지만 몇 가지 주의할 점이 있습니다.
- 순서 보장이 없습니다. 객체 속성의 열거 순서는 환경에 따라 다를 수 있으므로, 순서가 중요한 로직에는 적합하지 않습니다.
- 배열 순회에는 권장되지 않습니다. 배열에는 인덱스 기반의 for 루프나 forEach, for...of를 사용하는 것이 더 안전합니다.
- 상속된 속성도 포함됩니다. 프로토타입 체인의 속성까지 순회할 수 있으므로, 필요하다면 hasOwnProperty() 메서드로 자체 속성만 필터링하는 것이 좋습니다.
이러한 특성만 이해하면, for...in 루프는 객체의 구조를 탐색하고 디버깅하는 데 강력한 도구가 됩니다.