ES6에서 yieId 및 Generator 확인
Generator: (생성기) ES6 표준에 도입된 새로운 데이터 형식입니다.generator는 함수처럼 보이지만 여러 번 되돌아갈 수 있습니다.정의는 function과 유사합니다. 이름 앞에 *를 추가합니다. 다음은 생성기의 정의입니다.
function* fibs() {
}
코드 확인:
function* fibs() {
let a = 0;
let b = 1;
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
let [first, second, third, fourth, fifth, sixth] = fibs();
first에 값을 부여할 때fibs를 호출하고yieId를 만났을 때 멈추기 때문에 이때 a=0, b=1,first=0;second에 값을 부여할 때fibs를 계속 호출합니다. 지난번에 멈춘 곳부터 a=b=1, b=a+b=0+1=1, second=a=1;third에 값을 부여하고fibs를 계속 호출합니다. 지난번 정지 장소부터 a=b=1, b=a+b=1+1=2,third=a=1;fourth에 값을 부여하고fibs를 계속 호출합니다. 지난번 정지 장소부터 a=b=2, b=a+b=1+2=3, fourth=a=2;fifth에 값을 부여하고fibs를 계속 호출합니다. 지난번 정지 장소부터 a=b=3, b=a+b=2+3=5, fifth=a=3;sixth에 값을 부여하고fibs를 계속 호출합니다. 지난번 정지 장소부터 a=b=5, b=a+b=3+5=8,sixth=a=5;
이상, 가장 간단한 코드에 대한 상세한 설명을 통해 yieId와Generator의 용법을 알 수 있다. 그러나 이것은 프로젝트에서의 일반적인 용법이 아니다. 개념을 이해하기 쉽도록 읽을 뿐이다. 다음은 일상적인 용법을 해석한다.
var foo = function *() {
var x = 1;
var y = yield (x + 1);
var z = yield (x + y);
return z;
}()
var a = foo.next();
var b = foo.next(3);
var c = foo.next(5);
우리는 항상 생성기를 정의한 후에 넥스트 () 드라이브를 통해 호출합니다. 넥스트의 매개 변수는 지난번에 실행된 yieId의 값을 대표합니다. 따라서 첫 번째 호출할 때 넥스트에 매개 변수를 전송할 필요가 없습니다. 반환 값은 {value,done}를 포함하고,value는 현재 값을 대표합니다. done는 현재 생성기의 실행 여부를 표시합니다.
console.log(a) //{ value: 2, done: false }
//y = x + 1 = 2, yieId , done = false
console.log(b) //{ value: 4, done: false }
// z = x + y = 1 + 3 = 4, y yieId , 3, yieId (x+1) = 3, yieId , , done = false
console.log(c) //{ value: 4, done: true }
// z = 5, 5 , return , done = true
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.