let i = 0; //定义索引值的变量 return { next(){ //定义每次执行next的方法的时候返回来的value还有done的值 let done= (i>=foods.length); //done的值:有迭代的东西的时候是false,没有的话就是ture let value = !done?foods[i++]:undefined; //value的值:先问下done的值,若是这个done的反向值是true的话,value的值就会是当前此次循环的时候,这个foods里面某一个项目的值;若是done的值是ture的话,value的值就会是undefined return{ value:value, done:done } } } //运用迭代器 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}