ES6 생성기 Generator
생성기
생성기(Generators): 스트리퍼를 구축하는 더 좋은 방법입니다. ---생성기와 교체기
생성기는 특수한 함수로서 특수한 점은 다음과 같다.
*
이 하나 더 있고 이것*
전후에 공백 문자가 허용됩니다. 예를 들어 function* foo(){}
function *foo(){}
function*foo(){}
yield
연산자 yield 문장
ield 문장은Generator 함수 내부에서 실행을 멈출 수 있는 문장입니다. ield 문장 뒤의 값은 각종 데이터 형식, 문자열, 정수, 볼 값 등입니다.
밤송이를 봐라.
function *foo() {
yield 1;
yield 'hello';
yield 'generator';
return true;
}
let f1 = foo();
f1.next(); // Object {value: 1, done: false}
f1.next(); // Object {value: "hello", done: false}
f1.next(); // Object {value: "generator", done: false}
f1.next(); // Object {value: true, done: true}
f1.next(); // Object {value: undefined, done: true}
이 예는 생성기의 기본적인 사용법을 반영하고 다음과 같은 몇 가지 주의할 점이 있다.
yield와 return
밤을 보다.
function *bar() {
yield 1;
yield 'hello';
return true;
yield 'generator';
}
let b1 = bar();
b1.next(); // Object {value: 1, done: false}
b1.next(); // Object {value: "hello", done: false}
b1.next(); // Object {value: true, done: true}
b1.next(); // Object {value: undefined, done: true}
위의 예에서 알 수 있듯이return 문장을 만났을 때 되돌아오는 대상의done 속성 값은true이고 반복적으로 끝납니다. 뒤에 yield나return 문장이 있든 없든.일반 함수든Generator 함수든return 문장을 만나면 새로운 값을 되돌려 주지 않습니다.
yield 및 yield*
생성기에서 yield*는 yield가 필요한 값을 다른 생성기나 다른 임의의 교체 가능한 대상에 의뢰할 수 있습니다.
function* gen1() {
yield 2;
yield 3;
yield 4;
}
function* gen2() {
yield 1;
yield* gen1();
yield 5;
}
var g = gen2();
g.next(); // Object { value: 1, done: false }
g.next(); // Object { value: 2, done: false }
g.next(); // Object { value: 3, done: false }
g.next(); // Object { value: 4, done: false }
g.next(); // Object { value: 5, done: false }
g.next(); // Object { value: undefined, done: true }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.