iterable

iterable 字面意思:可迭代的,可重复的

    iterable 是ES6标准新引入的类型,而Set,map,Array都属于iterable 类型;

那么为什么要加入iterable 类型呢?

之前对array的操作大都是基于下标循环,而Set和map都无法使用下标,集合类型不统一;

而且对于array类型的for...in循环操作,当加入新属性后会出现意外状况,所以集合类型统一为iterable 的for...of循环;

for...in 示例:

var myArray=[1,2,4,5,6,7]

myArray.name="数组"

for (var index in myArray) {

  console.log(myArray[index]);//1 2 4 5 6 7 数组

}

使用for in遍历数组,会存在以下问题:

1.index索引为字符串型数字,不能直接进行几何运算

2.遍历顺序有可能不是按照实际数组的内部顺序

3.使用for in会遍历数组所有的可枚举属性,包括原型属性method和索引name

所以for in更适合遍历对象,不要使用for in遍历数组。

for ...of 示例:

var myArray=[1,2,4,5,6,7]

myArray.name="数组";

for (var value of myArray) {

  console.log(value);//1 2 4 5 6 7

}

for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。

for of遍历的只是数组内的元素,而不包括数组的原型属性method和索引name

 iterable的forEach()方法 ,接收一个函数,每次迭代就会自动调用该函数;

Set 和map都OK;

var a = ['A', 'B', 'C'];

a.forEach(function (element, index, array) {

    // element: 指向当前元素的值
    // index: 指向当前索引
    // array: 指向Array对象本身
});


你可能感兴趣的:(ES6)