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.
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.
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
}