구문
for( let index in testArray ) {
console.log( testArray[index], index );
}
설명 & 예제
let testArray = [1, 2, 3, 4, 5]; for( let index in testArray ) { console.log( testArray[index], index ); } result 1 "0" 2 "1" 3 "2" 4 "3" 5 "4"
let testArray2 = ['일', '이', '삼', '사', '오']; for( let index in testArray2 ) { console.log( testArray2[index], index+1 ); } result 일 01 이 11 삼 21 사 31 오 41
결과를 보면 index에는 int 형이아닌 string 형 숫자가 들어가는 것을 알 수 있다.
let testObject = { year: 2016, month: 12, date: 5, day: Monday }; for(let key in testObject) { console.log(key, testObject2[key]); } result year 2016 month 12 date 5 day Monday
testObject에 object를 주면 object의 키를 순회한다( array에서 사용하는 것 보다는 object에서 사용하는 것이 더 유용!)
let testArray = [1, 2, 3, 4, 5];
testArray.introduce = 'I am a Array';
console.log(testArray); // [1, 2, 3, 4, 5]
for (index in testArray) {
console.log(index);
}
result
0
1
2
3
4
introduce
array에 확장 속성으로 testArray.introduce = 'I am a Array' 이렇게 주고 for in 문으로 testArray의 index를 콘솔로 출력했더니 확장 속성까지 순회하는 것을 알 수 있다.
+
const testObject = { test1: 1, test2: 2 } for(const index in testObject) { // 각각의 반복에서 새로운 바인딩을 얻음 console.log(index); } for(let index in testObject) { // 여기에서 index는 각각의 루프 스텝에서 재정의 된다(재 할당이 아님) console.log(index); }
for ...in, for ...of 문에서 index 부분에 let 보다는 const를 쓰는 것이 더 나은 방법!
for in 문이 효율이 떨어진다고 잘 사용하지 않는 다는 이야기를 듣고 확실하게 이해가 되지 않아서 찾아보게 되었다.
for in 문을 array와 사용하는 것은 효율적이지 못한 것같다.
object의 키를 순회할 필요가 있을 때 사용하는 것이 좋을 것같다.