function* (generator function)

2023. 3. 29. 13:53개발/토막난 상식

반응형

Generator function은 JavaScript의 함수 유형 중 하나로, 값을 반환하고 호출을 끝내는 대신 값을 생성하고 호출자에게 전달하는 방식으로 작동합니다. 이러한 함수는 함수 내부의 yield 키워드를 사용하여 값을 반환하고 호출 상태를 유지하며, 다음 호출에서 함수 실행을 이어나갈 수 있습니다.

Generator 함수는 일반적으로 for...of 반복문과 함께 사용되어 시퀀스를 생성하거나, 비동기적인 제어 흐름을 생성하는데 유용합니다. 또한 Generator 함수는 메모리를 효율적으로 사용할 수 있어 대용량의 데이터셋을 다루는데 유용합니다.

다음은 Generator 함수의 예시입니다.

function* counter() {
  let i = 0;
  while (true) {
    yield i;
    i++;
  }
}

const gen = counter();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
// ...

위 예시에서, counter() 함수는 무한한 while 루프를 가지고 있습니다. 하지만 호출자는 Generator 객체를 통해 next() 메서드를 호출하면서 순차적으로 값을 생성받을 수 있습니다. yield 키워드는 호출자에게 값을 반환하고, 호출 상태를 유지하며 다음 호출에서 실행을 이어나갈 수 있게 합니다.

반응형