[js] 第660天 js中Iterable对象和Array有什么区别?
haizhilin2013 opened this issue · comments
- iterable对象是符合迭代器接口,可以通过 iterable.next()或者 for of 访问其中的元素
- Array是特殊的iterable对象,除了itearable的方式不遍历外,还 提供了 for in foreach map等方式
iterable协议定义: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
Array 是内置iterable协议的可迭代对象,因为在原生实现了[Symbol.iterator]函数,除Array之外还有Set, Map, String
等等内置实现iterable协议的可迭代对象.
- iterable对象是符合迭代器接口,可以通过 iterable.next()或者 for of 访问其中的元素
- Array是特殊的iterable对象,除了itearable的方式不遍历外,还 提供了 for in foreach map等方式
楼上回答可以通过iterable.next()或者for of访问元素稍有歧义,因为这是是通过调用可迭代对象的@@iterator
方法产生的迭代器(iterator)的功能并不属于iterable.
具体解释
Whenever an object needs to be iterated (such as at the beginning of a for...of loop), its @@iterator method is called with no arguments, and the returned iterator is used to obtain the values to be iterated.