JavaScript For...In 声明
For...In 声明用于对数组或者对象的属性进行循环操作。
for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
语法:
for (变量 in 对象)
{
在此执行代码
}“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
1:解析:for...in 语句
对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。
for (variable in [object | array])
2:参数
variable
必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。
object, array
可选项。要在其上遍历的对象或数组。
3:说明
在循环的每次迭代前,variable 被赋予 object 的下一个属性或 array 的下一个元素。然后可以在循环内的任一语句中使用它,就好像正在使用 object 的该属性或 array 的该元素一样。
当在一个对象上迭代时,没有办法决定或控制把对象的成员赋给 variable 的次序。在数组内将按元素的次序执行迭代,也就是,0、1、2、......
4:示例
document.write("<font color='red'>for in用法举例--数组</font><br>")
var obj=["zhao","liang","zl","an"]
for(var j in obj)
{
document.write("索引"+j+"、"+obj[j]+"<br>")
}
document.write("<font color='red'>for in用法举例--对象</font><br>")
var obj2={"name":"zl","age":"24","sex":"男"}
for(var j in obj2)
{
document.write("属性名:"+j+"------》值:"+obj2[j]+"<br>")
}
在 ECMA-262 中没有明确规定此行为,只说取决于实现。现在的普遍实现是先把当中的非负整数键提出来,排序好输出,然后将剩下的按定义时的顺序输出。
参考
for in 循环的输出顺序问题 - 司徒正美 - 博客园
对Set和Map,for of 遍历的顺序是按照各个成员被添加进数据结构的顺序。
参考
Iterator 和 for...of 循环 - ECMAScript 6入门