동글이의 STORY
Iteration 본문
728x90
반응형
✅ 핵심요약
- 이터레이션 이란?
- 어떠한 데이터 컬렉션(자료구조)을 순회하거나 반복하는 것을 의미
- 반복처리를 위한 프로토콜 존재
- for 루프, map(), filter() 등 이터레이션을 위한 다양한 내장 메서드들이 존재
⚡이터레이션
- 반복 처리를 나타내며 이를 위한 프로토콜(Protocol)을 갖고 있다.
- 프로토콜 : 이터레이션을 위한 규약이 있으며 이를 지켜야 반복 처리를 할 수 있다.
- ex) 배열을 반복하여 처리하기 위해서는 배열이 반복할 수 있는 오브젝트이어야 하며, 오브젝트에 반복 처리를 할 수 있는 메서드가 있어야 함
- 구성 : 이터러블(Iterable) 프로토콜과 이터레이터(Iterator) 프로토콜
🔹 이터러블 프로토콜
- 오브젝트의 반복 처리 규약 정의
- String, Array, Map, Set, TypeArray, Argument 오브젝트는 디폴트로 이터러블 프로토콜을 갖고 있음
- 자바스크립트 엔진이 랜더링될 때 이터러블 프로토콜 설정
⇒ 사전 처리를 하지 않아도 반복처리가 가능 - 이터러블 오브젝트 Symbol.iterator가 있어야 함
- Symbol.iterator 메서드를 소유하지 않으며 for ... of 문으로 순회가 불가능
- 프로토콜이 규약이므로 이터러블이 아닌 오브젝트에 프로토콜을 지켜 개발자 코드를 추가하면 이터러블 오브젝트가 됨
const array = [1, 2, 3];
console.log(Symbol.interator in array); // true
for (const item of array.keys()) {
console.log(item);
}
🔹 이터레이터 프로토콜
- 오브젝트의 값을 차례대로 처리할 수 있는 방법을 제공
- 이터레이터는 next 메서드를 소유하며 next 메서드를 호출하면 이터러블을 순회하며 value와 done 프로퍼티를 갖는 객체(iterator result)를 반환
const array = [1, 2, 3];
const iterator = array.values();
console.log(iterator.next().value); // 반환된 iterator로 수동 next 호출, 다음값 반환
console.log(iterator.next().value); // next의 value로 값에 접근 가능
console.log(iterator.next().value); // 3
console.log(iterator.next().value); // { value: undefined, done: true }
console.log(iterator.next().done); // true
728x90
반응형
'Javascript > ES6' 카테고리의 다른 글
오퍼레이션 (4) | 2024.06.12 |
---|---|
디스트럭처링 (1) | 2024.06.12 |
Spread 연산자 (4) | 2024.06.12 |
Arrow 함수 (2) | 2024.06.12 |
스코프, let, const (3) | 2024.06.12 |