Created
March 30, 2018 07:39
-
-
Save shoveller/1bb6244b535f5490cb6ca64e755161b6 to your computer and use it in GitHub Desktop.
제네레이터로 구현한 레인지 함수
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function* range(start, end, step = 1) { | |
for (let value = start; (step > 0 ? value <= end : value >= end); value = value + step) { | |
yield value; | |
} | |
} | |
for (const val of range(0, 10, 3)) { | |
console.log(val); // 0 1 2 | |
} |
Iterable은 반복이 가능한 객체
Iterable한 객체는 Iterator를 가진다
for-of문으로 Iterable한 객체를 간단히 순회할 수 있다
Iterator와 Iterable은 커스텀 제작이 가능하다
Generator로 Iterable를 간략하게 표현할 수 있다
Generator은 Iterable 이며 Iterator 이다
yield로 다음 번 값을 반환할 수 있다.
yield*로 Iterable의 값을 차례대로 반환할 수 있다.
yield로 함수를 일시적으로 빠져나와도 컨텍스트는 보존된다.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
자바스크립트의 제너레이터는 제어권을 함수를 실행하는 중에 일시적으로 넘겨줄 수 있는 코루틴이다.
단, 코루틴과는 다르게 멈출 때 돌아갈 위치를 직접 지정할 수 없으며, 단순히 호출자에게 제어권을 넘기는 차이점이 있다.
따라서 코루틴의 일종이며, 세미 코루틴이라고 불린다.