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}