Skip to content

Instantly share code, notes, and snippets.

@shoveller
Created March 30, 2018 07:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shoveller/1bb6244b535f5490cb6ca64e755161b6 to your computer and use it in GitHub Desktop.
Save shoveller/1bb6244b535f5490cb6ca64e755161b6 to your computer and use it in GitHub Desktop.
제네레이터로 구현한 레인지 함수
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
}
@shoveller
Copy link
Author

shoveller commented Mar 30, 2018

자바스크립트의 제너레이터는 제어권을 함수를 실행하는 중에 일시적으로 넘겨줄 수 있는 코루틴이다.
단, 코루틴과는 다르게 멈출 때 돌아갈 위치를 직접 지정할 수 없으며, 단순히 호출자에게 제어권을 넘기는 차이점이 있다.
따라서 코루틴의 일종이며, 세미 코루틴이라고 불린다.

@shoveller
Copy link
Author

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