曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3965|回复: 0
打印 上一主题 下一主题

for...in 语句

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-4-12 22:06:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 的具体操作过程。

      对象大大多数内置属性和方法将不会被遍历。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-11-1 08:30 , Processed in 0.078880 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表