본문 바로가기
Javascript

[Javascript] for...in , for...of (2)

by mtm1018 2025. 6. 4.

for...in, for...of(1) https://mtm1018.tistory.com/49

 

[Javascript] for...in, for...of (1)

for...in 반복문과 for...of 반복문일반적으로 for...in 반복문은 객체에, for...of 반복문은 배열같은곳에 사용한다고 알고있습니다. 이 글에서는 for...in과 for...of를 학습함과 동시에 객체와 이터러블이

mtm1018.tistory.com

 

 

 

저번 글에서는 for...in이 객체에서만 사용되는게 아니라 enumerable한 요소에서 사용된 다는 것을 알았습니다.

 

그렇다면 for...of는 어떤 곳에서 쓰일까요??

 

iterable 한 요소만 가능합니다.

 

iterable이란 반복 가능한 요소를 뜻하는 말입니다.

 

그럼 이것은 어떻게 찾을까요?

let arr = [123,456,789,258]

이런 배열이 있습니다. 이 배열을 그대로 콘솔창에 찍어보면 [[Prototype]]이라는 게 보이는 데 화살표를 열고 쭉 내려가다보면

 

 

Symbol이란 곳에 내장되어있는 게 보입니다.

 

for...of은 기본적으로 이렇게 사용합니다.

for(let value of arr){
console.log(value) // 123 456 789 258
}

그렇다면 이런건 어떨까요? 객체에다가 인덱스를 만들고 값도 부여해주는겁니다.

 

그러면 배열같지 않을까요?

const todo = {
0 : '공부하기',
1 : '양치하기',
2 : ()=>{},
length : 3
}

console.log(todo)

콘솔에 찍어보면 iterable이 안보이네요. 마치 배열처럼 이것도 열거할 수 있는것같은데 말이죠.

 

이런것을 유사배열이라고 합니다.

 

물론 symbol.iterator라는 속성도 커스텀하게 만들어 줄 수 있지만,

 

더 쉬운 방법이 있습니다.

 

객체를 배열로 만들어 주는 방법이 있습니다.

const keys = Object.keys(todo) // 객체의 키를 배열로 변환

console.log(key) // ['0', '1', '2', 'length']

const values = Object.values(todo) // 객체의 값을 배열로 변환

console.log(values) // ['공부하기', '양치하기', ƒ, 3]

const entries = Object.entries(todo) // 객체의 키 값 한 쌍을 배열로 변환

console.log(entries) // [Array(2), Array(2), Array(2), Array(2)]

번외로 콘솔창에 오류나면 보이는 단어들의 뜻이 뭔지 몇가지만 정리하겠습니다.

enumerable : 열거 가능
iterable : 반복 가능
mutable : 변형 가능
immutable : 변형 불가능

'Javascript' 카테고리의 다른 글

[Javascript] BOM  (1) 2025.06.12
[Javascript] function  (0) 2025.06.05
[Javascript] for...in, for...of (1)  (0) 2025.06.04
[Javascript] 형 변환  (0) 2025.06.04
[Javascript] Symbol / Map / Set  (0) 2025.04.13