能够将可迭代对象理解为“宽泛意义上的数组”——就是说,不必定是数组(Array.isArray(iterable) 返回 false),但却可以被 for…of 循环遍历。java
概览
可迭代对象不必定是数组,数组必定是可迭代对象。
每一个可迭代对象必然包含一个 [Symbol.iterator] 方法属性
字符串也是可迭代对象
改造普通对象
咱们举一个例子,下面有一个对象:数组
let range = {
from: 1,
to: 5
};
// 咱们想用 for..of 遍历 range,获得从 1(from) 到 5(to) 的天然数
// for(let num of range) { consol.log(num) } // 遍历结果 1 -> 2 -> 3 -> 4 -> 5
复制代码
明眼人一看,就知道 range 不就是个普通对象嘛,跟可迭代对象有什么关系呢?还要用 for..of 遍历,遍历结果还要是 1 -> 2 -> 3 -> 4 -> 5,这不扯淡呢吗?说的对,如今确定是扯淡,那是由于咱们啥都没作呢,可不是扯淡吗?函数
为了能让 range 这个普通对象变为可迭代对象,咱们须要先来了解下