Coding/JavaScript+jQuery

[Javascript - Q] for in문에서 array, object 배열 사용 시 변수의 값

PSUR 2021. 9. 15. 11:59

반복문 for in문을 배우는 중 array와 object를 사용했을 때 결과값이 이해가 안간다.

 

for in문에서 array를 사용한 경우,

let arr = [3, 4, 5];

for (let i in arr) { // 위와 같은 동작을 하는 for / in 문
    document.write(i + " ");
}
document.write("<br>"); // 결과는 0 1 2

 

변수로 사용된 i는 arr 배열의 내용이 아닌 순서를 출력한다.

 

그런데, for in문에서 object 배열을 사용한 경우,

var obj = {
    name : "이순신",
    age : 20
};

for (var i in obj) {
    document.write(i + " ");
}

// 결과는 name age

변수로 사용된 i는 obj 배열의 key값을 출력한다.

 

Q. 왜 for in 문에서 사용된 변수는 array 배열에서는 순서를, object 배열에서는 key 값을 출력하는 것일까?

A : array도 사실 key값을 불러낸것이다. 

 

console로 array의 구조를 살펴보면,

let arr = [3, 4, 5];

console.dir(arr);

/* 
	출력 결과
    
    (3) [3, 4, 5]
    0: 3
    1: 4
    2: 5
    length: 3
*/

console에는 위의 구조로 출력된다. 
즉, array는 index가 key값처럼 사용되며, index 값이 생략됐다.