迭代器 - Iterators

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

Iterators 就是迭代器,迭的意思就是交换或者轮流,代就是代替 .. 迭代就是轮流交换 .. 我们这里说的 Iterators,有几个特点 .. 每次执行的时候会返回一个对象,对象里面有两样东西,一个是 value ,表示返回的值,还有就是 done ,它的值是一个布尔值 .. 表示还有没有可以迭代的东西 .. 如果没有了,这个 done 的值就会是 true .. 意思就是完成了迭代 ..

另外 Iterators 里面,还应该有一个叫 next 的方法 .. 每次执行这个方法就会返回一个对象 .. 对象里的东西就是 value 还有 done .. 如果没有迭代的东西了, 执行 next 方法以后, value 的值就会是 undefined ,另外 done 的值就会是 true ..

在 es6 里面,有一种叫 Generators 的东西,可以生成刚才我们说的迭代器 .. 在介绍 Generators 之前,我们可以自己先去创建一个这样的迭代器 ..

这个迭代器可以是一个函数,定义一个函数 .. 比如叫它 chef .. 厨师 .. 它接收一个数组参数 .. 名字是 foods ,食物 ..

在函数里面,先定义一个表示索引值的变量 .. var i = 0; 再用一个 return ,去返回一个对象 .. 这个对象里有一个 next 方法 ... 这个方法可以返回一个对象 .. 对象里有两个属性 .. 一个是 value .. 它的值可以先用 value 表示 .. 另一个是 done .. 它的值也可以先用 done 来表示 .. 在上面,我们再去定义每次执行 next 方法的时候,返回的 value 还有 done 的值 ..

定义一个 done 变量 .. 它的值在有迭代的东西的时候是 false ,没有的话,就是 true .. 它里可以判断一下 i 是不是大于等于 foods.length ..

下面再定义一个 value 变量 .. 先问一下 done 的值 .. 如果 done 反向的值是 true 的话 .. value 的值就是当前这次循环的时候,foods 里面的某个项目的值 .. 用一个 foods ,再加上一个索引号 i++ ,这样每次执行 next 方法的时候,这个索引号都会加上 1 ..

再输入一个冒号 .. undefined .. 意思就是,如果 done 的值是 true 的话 .. value 的值就会是 undefined ..

下面再去用一个这个 chef 迭代器 .. 定义一个变量 .. wanghao .. 等于 chef .. 给它一个数组参数 .. 数组里有两个项目,西红柿还有鸡蛋 ..

然后再去执行一下 next 方法 .. 把返回的结果输出到控制台上 .. 第一次执行的时候,next 方法返回的对象里面,value 的值是 西红柿 .. done 的值是 false .. 再执行一次 .. 这次 value 的值是 鸡蛋 .. done 的值是 false ..

我们可再执行一次 .. 这回,传递给 chef 处理的数组里面就没有项目了 .. 所以 value 的值会是 undefined .. done 的值变成了 true ..

迭代器 - Iterators《 JavaScript:ES6 新功能 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点