|
for...in 语句可以遍历对象中所有的属性,或数组中的所有元素。使用形式为:for (variable in object)
statement
for (var variable in object)
statement variable 是赋值的变量。还可以使用 var 来定义局部变量。如果使用 var 来定义局部变量,那么该变量不用于循环,在每次循环时都会重新定义该变量。
object 是对象名或数组名。
statement 是循环执行的语句块。
对于对象,赋值给变量的是对象的属性名,因此可以在循环体中通过 [] 运算符来获得对象的属性值。
对于数组(数组可以看做是一个特殊的对象),赋值给变量的是数组的下标。
测试代码:<script type="text/javascript" language="javascript">
<!--
var myObj = {a:10, b:20, c:30}; //定义一个对象
for (gobj in myObj) {
//输出对象属性值
document.write("myObj." , gobj, "=", myObj[gobj], "<br>");
}
//定义一个数组
var myArray = [1, true, "hello"];
for (var val in myArray) {
document.write("myArray[", val, "]=", myArray[val], "<br>");
}
-->
</script>
输出结果为:myObj.a=10
myObj.b=20
myObj.c=30
myArray[0]=1
myArray[1]=true
myArray[2]=hello
使用 for...in 遍历对象属性或数组时,需要注意以下几点:
for...in 不但可以遍历对象的属性,还能遍历对象的方法。对于包括了方法的对象,在遍历时可能出现将方法名赋值给变量的情况。
不能指定遍历的的次序。相同的 for...in 语句在不同的浏览器里遍历的次序可能是不同的,这有可能导致输出的结果有所不同。
如果在遍历循环体中删除了一个还没有遍历的属性,那么该属性将不会被遍历到。
如果在循环体中添加了属性,那么该属性是否会被遍历到,这取决于 JavaScript 的具体操作过程。
|
|