[JS] 제너레이터

Jin·2022년 1월 22일
0

JavaScript

목록 보기
12/12
post-thumbnail

제너레이터

일반 함수는 하나의 값 혹은 0개의 값만을 반환하지만 제너레이터를 사용하면 여러 개의 값을 필요에 따라 하나씩 반환(yield) 할 수 있다.

제너레이터 함수

function* generateSequence() {
  yield 1;
  yield 2;
  return 3;
}

제니레이터 함수는 일반 함수와 다르게 호출을 해도 코드를 실행하지 않고, 대신 실행을 처리하는 '제너레이터 객체'가 반환된다.

function* generateSequence() {
  yield 1;
  yield 2;
  return 3;
}

let generator = generateSequence();
alert(generator); // [object Generator]

next()

next() 는 제너레이터의 주요 메서드이다. next()를 호출하면 가장 가까운 yield <value>문을 만날 때 가지 실행이 지속된다. value가 생략 되어있다면 undefined가 된다.
next()는 항상 두 프로퍼티를 가진 객체를 반환한다.

  • value : 산출 값
  • done : 함수 코드 실행이 끝났으면 true, 아니라면 false
function* generateSequence() {
  yield 1;
  yield 2;
  return 3;
}

let generator = generateSequence();
let one = generator.next()
console.log(one); // {value:1, done: false}
let two = generator.next()
console.log(two); // {value:2, done: false}
let three = generator.next()
console.log(three); // {value:3, done: true}
let four = generator.next()
console.log(four); // {value: undefined, done: true}
profile
내가 다시 볼려고 작성하는 블로그. 아직 열심히 공부중입니다 잘못된 내용이 있으면 댓글로 지적 부탁드립니다.

0개의 댓글