迭代
按照一定的顺序取出数据,无须知道数据的长度。
与循环的区别:迭代是不知道数据的长度,而循环是实现知道数据的长度的。
迭代的两个条件
- 能知道是否有下一个数据;
- 能拿到下一个数据。
迭代器
一个具有next()方法的对象,next方法返回下一个数据并且指示迭代是否完成
数组和类数组是迭代器。
迭代协议
含有Symbol.iterator
属性(可迭代对象),且该属性的值是一个函数,函数的返回值是next()方法,next()方法的返回值是一个对象,对象中有两个属性(value:下一个属性的值,done:Boolean值,为true时,迭代完成)
for of循环
遍历可迭代对象,不能遍历普通对象(没有Symbol.iterator属性)
展开运算符可以展开可迭代对象,然后将其放在数组里面,若对象不是可迭代对象时,展开运算符展开将其放进数组中会报错(object is not iterable (cannot read property
)。