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
77 声望1 粉丝