Javascript数组的“字符串”索引 & for…in 和 for…of的区分

TL;DR:js中的数组是没有“字符串”索引的,形如array['b'] = someValue只是在array对象上添加了属性

本来有几个例子,但是搜到了MDN的文档,所以摘一点:

下面摘自MDN
Difference between for...of and for...in

The for...in loop will iterate over all enumerable properties of an object.

for in 轮回会遍历一个对象上面的一切enumerable属性。

The for...of syntax is specific to collections, rather than all objects. It will iterate in this manner over the elements of any collection that has a [Symbol.iterator] property.

for of 语法是针对
鸠合的,而不是一切的对象。它会遍历定义了
[Symbol.iterator]属性的鸠合的一切元素。

The following example shows the difference between a for...of loop and a for...in loop.

MDN的例子以下:

Object.prototype.objCustom = function() {}; 
Array.prototype.arrCustom = function() {};

let iterable = [3, 5, 7];
iterable.foo = 'hello';

for (let i in iterable) {
  console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}

for (let i of iterable) {
  console.log(i); // logs 3, 5, 7
}
    原文作者:twohappy
    原文地址: https://segmentfault.com/a/1190000010095267
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞