👋 Generator 함수
1. function*
- Generator function :
function*
키워드를 사용한 함수 -
제너레이터 함수 형태 :
function* 선언문
,function* 표현식
,Generator Function
function* sports(one) {} const book = function* (one) {}; const music = Object.getProtytpeOf(function* () {}).constructor; const gen = new music();
- 작성 방법 :
function*
다음에 소괄호() 작성이어서 작성해도 되고 하나 이상 띄워도 됨
2. funtion*
선언문
function*
다음에 함수 이름 작성-
제너레이터 함수를 호출하면 함수 블록
{}
을 실행하지 않고Generator
오브젝트를 생성하여 반환
function* sports(one, two) { yield one + two; } console.log(typeof sports); // true const obj = sports(1, 2); console.log(typeof obj); // object console.log(obj.next()); // {value: 3, done: false} // 1. function* sports(one, two){} 선언문 형태의 제너레이터 ㅎ마수 임 // 2. 제너레이터 함수의 타입은 function // 3. const obj = sports(1, 2); sports 함수를 호출하면 Generator 오브젝트를 생성하여 반환함 // 4. 이때, 함수 코드를 실행하지 않음 // 5. 파라미터 값은 생성한 오브젝트에 설정됨 // 6. new 연산자를 사용할 수 없음, 단일 함수로 사용하겠다는 뉘앙스 // 7. typeof obj 생성한 Generator 오브젝트 타입 object // 8. obj.next() Generator 오브젝트가 iterator 오브젝트이므로 next() 함수를 호출 할 수 있으며 이때 함수 코드가 실행 됨
Generator
오브젝트는iterator
오브젝트-
함수 코드 실행
Generator
오브젝트의 메소드를 호출 할 때
3. function*
표현식
-
function*
다음에 함수 이름 작성은 선택- 일반적으로 함수 이름을 작성하지 않음
function*
왼쪽에 변수를 선언하며 변수 이름이 함수 이름이 됨
const sports = function* (one) { yield one; }; const obj = sports(100); console.log(obj.next()); // {value: 100, done: false} // 1. const sports = function* (one) {} 표현식 형태의 제너레이터 함수 임 // 2. 왼쪽 sports가 함수 이름이 됨 // 문법 적으로는 * 다음에 함수 이름을 작성할 수 있지만 일반적으로는 사용하지 않음
-
함수를 선언하는 형태만 다를 뿐
- 다른 것은
function*
선언문과 같음
- 다른 것은