본문 바로가기
Web/JavaScript

[JavaScript] 제네레이터(Generator)

by coding-choonsik 2023. 4. 19.
728x90
반응형
SMALL

1. 제네레이터(Generator)

function* 제네레이터명(){
	yield 값;
}
  • 실행을 멈췄다가 나중에 다시 접근할 수 있는 특이한 형태의 함수
  • 나중에 다시 접근하기 위해 context(변수)를 저장된 상태로 남겨둠
  • 이터레이터(iterator)를 생성하는 함수, 이터레이터는 반복 가능한(iterable) 객체를 만드는데 사용
  • 제네레이터 함수는 function* 키워드로 정의하며, yield 키워드를 사용하여 값을 반환

 

이터레이터란? ⬇️⬇️⬇️

 

[JavaScript] 이터레이터(Iterator) & 이터러블(Iterable)

1. 이터레이터(Iterator) 반복 처리가 가능한 객체 내부적으로 next() 메서드를 가지며 next()메서드는 IteratorResult 객체 value와 done이라는 프로퍼티를 가진 객체를 반환함 2. 이터러블(Iterable) 반복이 가

coding-yesung.tistory.com


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제네레이터</title>
</head>
<body>
    <h2>제네레이터</h2>
    <script>
        function* multipleGenerator(){
            try{
                for(let i=0; i<10; i++){
                    console.log(i)
                    yield i **2;  // 첫가격
                }
            }catch(error){
                console.log(error)
            }
        }

        const multiple = multipleGenerator()
        let next = multiple.next()
        console.log(next.value, next.done) // 0  false(끝나지않음)
        next = multiple.next()
        console.log(next.value, next.done)
        next = multiple.next()
        console.log(next.value, next.done)
        next = multiple.next()
        console.log(next.value, next.done)
        next = multiple.next()
        console.log(next.value, next.done)
        next = multiple.next()
        console.log(next.value, next.done)
    </script>
</body>
</html>

📍 next() : 제네레이터(generator) 객체의 상태를 관리하며, 호출될 때마다 yield 키워드로 구분된 다음 값을 반환

 

next() 메서드가 반환하는 값은 value와 done 두 개의 프로퍼티를 가지는 객체
value 프로퍼티는 yield 키워드 다음에 오는 값이며, done 프로퍼티는 이터레이터가 끝났는지 여부를 나타냄

 




MDN: generator

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Generator

 

Generator - JavaScript | MDN

Generator 객체는 generator function 으로부터 반환되며, 반복 가능한 프로토콜과 반복자 프로토콜을 모두 준수합니다.

developer.mozilla.org

 

 

728x90
반응형
LIST