for-in
for-in语句是一种严格的迭代语句,用于枚举对象中的非符号键属性,语法如下:
for(propertyinexpression) statement
举例:
<script>for(constpropNameinwindow) { document.write(propName) } </script>
以上例子使用for-in循环显示了BOM对象window的所有属性。每次执行循环,都会给变量propName赋予一个window对象的属性作为值,直到window的所有属性都被枚举一遍。与for循环一样,这里控制语句中的const也不是必须的。但是为了确保这个局部变量不被修改,推荐使用const。
ECMAscript中的对象的属性是无序的,因此for-in语句不能保证返回对象属性的顺序。换句话说,所有可枚举的属性都会返回一次,但返回的顺序可能会因浏览器而异。
如果for-in循环要迭代的变量是null或undefined,则不执行循环体!
for-of
for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素,语法如下:
for(property of expression)statement
举例:
<script>for(constelof [2,4,6,8]) { document.write(el) } </script>
这个例子中,我们使用for-of语句显示了一个包含4个元素的数组中的所有元素。循环会一直持续到将所有元素都迭代完。与for循环一样,这样控制语句中的const也不是必须的,但是确保这个局部变量不被修改,推荐使用const。
for-of循环会按照可迭代对象next()方法产生值的顺序迭代元素。