1. 개요
Generator는 ES6에서 도입 한 새로운 데이터 유형입니다. 기능처럼 보입니다. 반환을 사용하는 것 외에도 수율을 여러 번 반환 할 수 있습니다.
생성기는 함수 *, (주 * 번호)로 정의됩니다.
2. 예
함수는 상태를 저장할 수 없으며 때로는 숫자를 저장하기 위해 전역 변수가 필요합니다.
2.1
'Strict'; function next_id () {var id = 1; while (id <100) {수율 ID; id ++; } return id;} // test : var x, pass = true, g = next_id (); for (x = 1; x <100; x ++) {if (g.next (). value! == x) {pass = false; 경고 ( '테스트 실패!'); 부서지다; }} if (pass) {alert ( 'test passed!');}2.2 무한 루프 반복기
함수* idmaker () {var index = 0; while (true) 수율 색인 ++;} var gen = idmaker (); // "generator {}"console.log (gen.next (). 값); // 0console.log (gen.next (). 값); // 1console.log (gen.next (). 값); // 22.3generator.prototype.next ()
반복이 끝나면 Generator.next (). done === true, 종료하기 전에 === false
함수* gen () {수율 1; 수율 2; 수율 3;} var g = gen (); // "generator {}"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 : undefined, done : true}"2.4 Generator.Prototype.RETurn ();
리턴 메소드는 주어진 매개 변수 값을 반환하고 반복자를 종료합니다.
예
함수* gen () {수율 1; 수율 2; 수율 3;} var g = gen (); g.next (); // {value : 1, done : false} g.return ( "foo"); // {value : "foo", done : true} g.next (); // {value : 정의되지 않은, 완료 : true}완료의 값이 참이면 전화 반환이 있으면 반환 된 값도 정의되지 않습니다.
function* gen () {수율 1;} var g = gen (); console.log (g.next ()); // {value : 1, done : false} console.log (g.next ()); // {value : done : true} console.log (g.return (1)); // {value : 정의되지 않은, 완료 : true}2.5 Generator.prototype.throw ()
Thorw () 메소드는 반복자에 예외를 던져 반복자의 실행을 되 찾습니다.
두 가지 속성으로 객체 객체를 반환합니다 : 값과 완료
function* gen () {while (true) {try {apttit 42; } catch (e) {console.log ( "Error Catch!"); }}}}}} var g = gen (); var a = g.next (); // {value : 42, done : false} var b = g.throw (새 오류 ( "무언가가 잘못 되었음")); // "오류 캐치!"// {value : 42, done : false} console.log (a); console.log (b.value+"::"+B.Done);위의 기사 JS 생성기 데이터 유형에 대한 심층적 인 이해는 내가 공유 한 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.