
Object에 있던 값을 출력할때 사용한다.
형태는 다음과 같다
for ( 변수생성 in 오브젝트 ) { 코드입력 }
아래 예시를 보자
var myObj = { name: "Kim", age: 20 };
for (var key in myObj) {
console.log(myObj[key]); // Kim, 20
}
for (var key in myObj) {
console.log(key); // 오브젝트의 키 name, age 차례로 출력
}
for (var key in myObj) {
console.log(myObj); // myObj 오브젝트가 두번 출력 {...}, {...}
}
결과

for in 반복문은 오브젝트 내의 데이터 개수만큼 반복한다.
변수 생성 자리에는 var로 key라는 변수를 생성했다. 이 변수key는 오브젝트의 키 값이 된다.
enumerable인 것만 반복한다.
오브젝트를 생성할때 몇가지 속성들이 자동으로 저장되는데 그 중 enumerable속성이 true인 것만 반복한다.
( enumerable뜻 = 셀 수 있는)
부모의 prototype도 반복한다.
불필요하게 부모의 prototype까지 반복하는게 싫다면 방법이 있다.
오브젝트에 붙이는 hasOwnProperty() 함수를 사용한다.
class 부모 {
}
부모.prototype.name = 'Park';
var 오브젝트 = new 부모();
for (var key in 오브젝트) {
if (오브젝트.hasOwnProperty(key)) {
console.log(오브젝트[key]);
}
}
오브젝트가 key값을 직접 가지고 있으면 true 없으면 false를 반환한다.
if문에 넣어 사용하면 된다.
iterable인 자료형에만 적용할 수 있다.
(String, Array, arguments, NodeList, Map, Set)
literable인 자료형은 [Symbol.iterator]()이라는 일종의 메소드를 가진 자료형들을 뜻한다.
var myArr = [1, 2, 3, 4, 5];
for (var a of myArr) {
console.log(a); // 1, 2, 3, 4, 5
}
결과
