-
[JS] 제너레이터기초/자바스크립트 2022. 12. 17. 00:40
인프런 강의 정리
함수형 프로그래밍과 Javascript ES6+
일반함수 이름에 *을 붙여 제너레이터 함수를 만든다
제너레이터 함수 : 이터레이터를 만들어준다.
마지막 return 값은 done을 할 때 반환되는 값이다.
function *func() { yield 1; if ( false ) yield 2; yield 3; }
제너레이터는 문장을 순회할 수 있는 값으로 만들 수 있다.
제너레이터를 통해 순회할 수 있는 이터러블을 쉽게 만들 수 있다.
//제너레이터 코드를 이용한 홀 수 이터러블 만들기
//1씩 무한하게 증가시키는 함수 function* infinity(i = 0) { while (true) yield i++; } //1씩 무한하게 감소시키는 함수 function* infinity2(i = 0) { while (true) yield i--; } // 입력된 l까지 입력된 iter를 통해 생성하는 함수 function* limit(l, iter) { for (const a of iter) { yield a; if (a == l) return; } } // odds paramter : value > 0 // 1부터 입력된 양수 l까지 홀수만 생성하는 함수 function* odds(l) { for (const a of limit(l, infinity(1))) { if (a % 2) yield a; } } // odds2 paramter : value < 0 // -1부터 입력된 음수 l까지 홀수만 생성하는 함수 function* odds2(l) { for (const a of limit(l, infinity2(-1))) { if (a % 2) yield a; } } for (const a of odds(40)) console.log(a); // 1 3 5 ... 39 for (const a of odds2(-40)) console.log(a); // 1 3 5 ... 39
# for of, 전개 연산자, 구조 분해, 나머지 연산자
console.log(...odds(10)); // 1 3 5 7 9 console.log([...odds(10), ...odds(20)]); // [1, 3, 5, 7, 9, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19] const [head, ...tail] = odds(5); console.log(head); // 1 console.log(tail); // 3 5 const [a, b, ...rest] = odds(10); console.log(a); // 1 console.log(b); // 3 console.log(rest); // 5 7 9
'기초 > 자바스크립트' 카테고리의 다른 글
[JS] Map, Filter, Reduce (0) 2022.12.17 [JS] 일급 함수와 고차함수 (0) 2022.12.14 GridSatck (Test.html) (0) 2022.03.16 [JS] 모자이크 처리 (2) 2022.03.04 [Javascript] OpenLayers + GeoServer + PostGIS + VWORLD + WFS,WMS (7) 2020.11.11