본문 바로가기

PDR Tech log

generator yield*

2016년 12월에 Generator와 Async 코드 이해하기 라는 제목으로 Generator 의 next() 동작과 next(parameter)의 동작에 대해 설명 했습니다. 이 번에는 yield* 문법에 대해 설명 하려고 합니다.


yield* 표현은 다른 generator 또는 iterable 객체에 yield를 위임할 때 사용됩니다.

문법은 다음과 같습니다.


yield* [[expression]];


여기서 expression 은 iterable 객체를 반환하는 표현식 입니다.


그럼, 예제를 볼까요? 


첫번째, 다른 generator 에 위임하기 입니다.

generator2 의 yield* generator1(); 구문을 통해서 yield 를 generator1 에 위임합니다.



두번째, 다른  iterable 객체 (array, arguments, Set, Map 객체) yield 하기 입니다.


그중, array 를 사용한 예제입니다.


arguments를 사용한 예제입니다.


Set를 사용한 예제입니다.


Map을 사용한 예제입니다.


yield* 문법을 통해서 generator를 구성할때 해당 객체가 iterable 객체이거나, 아니면 다른 generator일때 구성을 체계적으로 유지할 수 있는 문법입니다. 


- by Jake -