Javascript 생성기(Generator)의 소개 및 사용
3486 단어 javascript생성기generator
무엇이 생성기입니까?
생성기는 함수 내부에서 실행되는 일부 코드이다
생성기 문법은 언어에 따라 다르다.Javascript의 생성기 문법은 PHP와 유사하지만 차이점도 크다. 만약 그들의 작용이 같기를 원한다면 결국은 매우 곤혹스러울 것이다.
javascript에서 생성기를 사용하려면 다음이 필요합니다.
// File: sample-program.js
function *createGenerator() {
for(let i=0;i<20;i++) {
yield i
}
}
const generator = createGenerator()
console.log(generator.next())
console.log(generator.next())
이 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.$ node sample-program.js
{ value: 0, done: false }
{ value: 1, done: false }
다음은 내가 이 프로그램이 어떻게 작동하는지 설명한다.
생성기 함수
먼저 코드에 생성기 함수의 정의가 존재합니다.
function* createGenerator() {
for(let i=0;i<20;i++) {
yield i
}
}
function 뒤에 있는 *는 자바스크립트에 생성기 함수라고 알려줍니다.다음 글꼴은 모두 생성기 함수의 유효한 정의입니다.
function*createGenerator
function* createGenerator
function *createGenerator
* 함수 이름의 일부가 아닙니다.function* 기호가 생성기를 정의합니다.생성기 함수 호출
생성기 함수를 정의한 후에 다른 이름의 함수로 명명합니다.
// : , *。 *
// `function *`
const generator = createGenerator()
그러나createGenerator 함수는 반환 값이 없습니다.이것은 생성기 함수에 전통적인 반환 값이 없기 때문이다.반대로, 생성기 함수를 직접 호출할 때, 그것은 항상 실례화된 Generator 대상을 되돌려줍니다.이 생성기 대상은next 방법을 가지고 있다.next를 호출하면 생성기 함수 내부에서 코드가 실행됩니다.
function* createGenerator() {
for(let i=0;i<20;i++) {
yield i
}
}
이것은 매우 중요하기 때문에 그것을 다시 호출할 수 있다.생성기 함수를 직접 호출하면 생성기 함수에서 코드가 실행되지 않습니다.생성기 대상을 만듭니다.이것은 생성기 대상에next를 호출하여 생성기 함수의 코드를 호출합니다.생성기 대상에서next를 처음 호출할 때, 내부 코드는 yield 문장이 나타날 때까지 계속 실행됩니다.yield에 실행되면javascript는 이 코드의 실행을 멈추고,next는 (즉 당신에게, 또는 yield) 하나의 대상을 되돌려줍니다. 이 대상은 yield 줄의 값을 포함합니다.
두 번째 (또는 세 번째, 네 번째, 심지어 여러 번) next를 호출할 때, 코드는 정지를 취소하고 계속 실행할 것입니다.변수 (예: 이 예의 i) 는 값을 유지합니다.코드가 다른 yield 문장에 도달하면 이 함수는 다시 멈추고 yield 값을 포함하는 대상을 되돌려줍니다.
이것이 바로 우리가 왜 두 번next를 호출해야 하는가 하는 것이다
console.log(generator.next())
console.log(generator.next())
출력은 다음과 같습니다.{ value: 0, done: false }
{ value: 1, done: false }
생성기 함수의 코드가 실행되면 나중에next에 대한 모든 호출은 하나의 대상을 되돌려줍니다. 이 대상의 값은undefined이고done는true로 설정됩니다.
{ value: undefined, done: true }
생성기 및 순환
생성기 대상에서next를 수동으로 호출할 수 있지만, 우리는 주로 순환에서 사용해야 한다.이 약간 수정된 프로그램을 보세요.
// File: sample-program.js
@highlightsyntax@jscript
function *createGenerator() {
for(let i=0;i<5;i++) {
yield i
}
}
const generator = createGenerator()
for(const value of generator) {
console.log(value)
}
for...of 순환에서 생성기 대상을 사용할 때, 매번 순환은 생성기 대상에next를 호출하고, 생성된 값으로 변수 (위의value) 를 채웁니다.프로그램을 실행하면 다음과 같은 내용이 출력됩니다.$ node sample-program.js
0
일
이
삼
사
다음 문장에서 우리는 더욱 깊이 있게 for...of 순환, 그리고 자바스크립트에 자바스크립트의 모든 대상을 순환하는 내장 방법을 탐색합니다.
총결산
자바스크립트 생성기(Generator)에 대한 이 글은 여기까지 소개되었습니다. 자바스크립트 생성기(Generator)에 대한 더 많은 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개별 마크다운 블로그 페이지 만들기 - 13부이를 통해 개별 마크다운 기반 블로그 게시물 작성을 시작할 수 있습니다! 이 기사를 따르려면 을 시작점으로 사용하십시오. blog 페이지 디렉토리에 동적 페이지를 생성하여 시작할 수 있습니다. 이 파일[slug].j...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.