1. 程式人生 > >ES6 迭代器和生成器

ES6 迭代器和生成器

設計為了更高效的資料處理,避免過多for迴圈巢狀(程式碼複雜度,跟蹤多個迴圈變數)

1. 迭代器: 為迭代過程設計的介面

所有的迭代器物件都有next()方法,每次呼叫都返回一個結果物件,物件有兩個屬性

  一個是value, 表示下一個將要返回的值

  一個是done,Boolean型別,當沒有更多可返回資料返回true

/* ES5迭代器實現 function createIterator(items){   var i = 0;   return {     next: function(){       var done = (i >= items.length);       var value = !done? items[i++] : undefined;       return {         done: done,         value: value       }       }   } } */ // ES6 生成器實現   function *createIterator(){     yield 1;     yield 2;     yield 3;   }   var iterator = createIterator([1,2,3]);   console.log(iterator.next());   console.log(iterator.next());   console.log(iterator.next());   console.log(iterator.next());   yield 使用限制

只可在生成器內部使用,與return關鍵字一樣,不能穿透函式邊界