for (variable in object)
statement;
在执行for/in语句过程中,JavaScript解释器会首先计算object表达式。如果表达式为null或undefined,JavaScript解释器将会跳过循环并执行后续代码。如果表达式等于一个原始值,这个原始值将会转换为之对应的的包装对象(wrapper object)。否则,expression已经是对象了。JavaScript会依次枚举对象的属性来执行循环。然而在每次循环之前,JavaScript都会先计算variable表达式的值,并将属性名赋值给它。
for/in循环可以枚举数组的索引。
下面的枚举顺序取决于具体的实现:
- 对象继承了可枚举的属性。
- 对象具有整数索引的属性。
- 使用delete删除了对象已有的属性。
- 使用Object.defineProperty()或者类似的方法改变了对象属性。
从上面可以看出数组也是一种对象只不过,属性是数值罢了。