이터러블 : for - of 문

지환·2024년 6월 18일
0

자바스크립트

목록 보기
26/30

이터레이터

  • 이터러블의 Symbol.iterator 메소드가 반환한 이터레이터는 next 메소드를 갖음

    • next 메소드 호출하면 이터러블을 순차적으로 한 단계씩 순회하며 순회 결과를 나타내는 이터레이터 리절트 객체를 반환

    • 리절트 객체의

      • value 프로퍼티는 현재 순회 중인 이터러블의 값

      • done 프로퍼티는 이터러블의 순회 완료 여부를 나타냄

const array = [1, 2, 3];
const iterator = array[Symbol.iterator]();

console.log("next" in iterator); // true

console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

for - of 문

for (변수 선언문 of 이터러블) {...}
  • 내부적으로는 이터레이터의 next 메서드를 호출하여 이터러블을 순회하며 next 메서드가 반환한 이터레이터 객체의 done 프로퍼티 값을 확인하며 순회

    • false : 이터러블 순회를 계속 진행

    • true : 이터러블 순회를 중단함

for (const iter of [1,2,3]){
	console.log(iter); // 1 2 3

}


// for문으로 구현한 for - of문
// 이터러블
const iterable = [1, 2, 3];

// 이터러블[Symbol.iterator] 메서드 호출 -> 이터레이터 생성
const iterator = iterable[Symbol.iterator]();

for (;;) {
  const res = iterator.next();

  if (res.done) break;

  const item = res.value;
  console.log(item); // 1 2 3
}
profile
아는만큼보인다.

0개의 댓글