본문 바로가기

function*

by meno1011 2022. 8. 23.
728x90

 function*  선언은 generator function을 정의 하는데 이 함수는 Generator 객체 (Object [Generator] {}) 를 반환합니다.

 

Generator함수는 호출되어도 즉시 실행되지 않고 Iterator 객체를 반환하는데

이때 Iterator객체에  next()  메서드를 이용해서 호출하면 Generator 함수가 실행되어 yield문이 있는 곳까지 진행되고

yield문은 반환값  value 속성과 Generator함수 안의 모든 yield문의 실행 여부를 표시하는 boolean타입  done 을 반환합니다.

function* foo(){ // generator 함수
	var index = 0;
	while(index <= 2)

		yield index++;
}

var iterator = foo();
console.log(iterator); // <- 반환객체 Object [Generator] {}
console.log(iterator.next()); // {value: 0, done: false}
console.log(iterator.next()); // {value: 1, done: false}
console.log(iterator.next()); // {value: 2, done: false}
console.log(iterator.next()); // {value: undefiend, done: true}

위 코드의 결과를 보듯이 generator는 이터러블(iterable)입니다.

따라서  for..of  반복문을 통해서 값을 얻을 수 있습니다.

var generator = foo()

for(let value of generator){
    console.log(value);
}
// 결과
// 0
// 1
// 2

 

참고 1 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/function* 

 

function* - JavaScript | MDN

function* 선언 (끝에 별표가 있는 function keyword) 은 generator function 을 정의하는데, 이 함수는 Generator 객체를 반환합니다.

developer.mozilla.org

참고 2 : https://ko.javascript.info/generators

 

제너레이터

 

ko.javascript.info

 

'' 카테고리의 다른 글

Array Method 정리1 ( concat(), fill(), filter() )  (0) 2022.08.29
yield  (0) 2022.08.24
클로저  (0) 2022.07.01
호이스팅  (0) 2022.06.28
브라우저 렌더링  (0) 2022.06.27