ES6基礎之——生成器Generators

手共建立迭代器有點麻煩,咱們可使用Generators去生成迭代器,Generators能夠翻譯成生成器
先看一下一個簡單的生成器,定義一個生成器用的是
functions* chef(){
  yield 'tomato';
  yield 'eggs';
}
let zhangsan=chef();

  

如今zhangsan就是一個迭代器,可使用next()方法把他返回的東西輸出在控制檯,結果以下:
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}

 

下面再改造一下chef生成器:將它接受一個參數,名字爲foods,在函數裏面使用for循環,每次循環都yield當前循環項
functions* chef(foods){
for(var i=0;i<foods.lingth;i++){
  yield foods[i]
}
}
let zhangsan=chef(['tomato','eggs']);
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}

 

這個生成器也可使用函數表達的方式建立
let chef =functions* (foods){
  for(var i=0;i<foods.lingth;i++){
    yield foods[i]
  }
}
let zhangsan=chef(['tomato','eggs']);
console.log(zhangsan.next()); //{value:'tomato',done:false}
console.log(zhangsan.next()); //{value:'eggs',done:false}
console.log(zhangsan.next()); //{value:undefined,done:true}
相關文章
相關標籤/搜索