js使用for in遍历时的细节问题

今天在看别人代码过程中被 “for in”搞得有点晕,所以好好研究了一下,写下来分享给对 for in遍历理解有问题的朋友。

基本格式:

for (property in expression){
    其他语句
}

expression为数组时,property会被赋值为项的位置;expression为对象时会被赋值为对象拥有的属性,但是其只能暂时性的存储一个属性值,并不会单独创建一个数组来存储所有属性值。

  expression·为对象时:

<!DOCTYPE>
<html>
<body>
<script type="text/javascript">
var obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象  
var keys=[];//定义一个数组用来接受key  
var values=[];//定义一个数组用来接受value  
for(var key in obj){  
    keys.push(key);  
    values.push(obj[key]);//取得value   
    alert(eval("obj."+key));//循环内逐一打印value值  
    }  
alert(key);   //输出为 sex,最后保存的为sex属性
alert(obj[key]);  //输出为female,
alert("keys is :"+keys+" and values is :"+values);  //keys is : name,age,sex and values is : wjy,26,female 
</script>
</body>
</html>

  需要注意的一点事key中存储的为属性的双引号格式即 “property”,所以数组在利用他的时候就不需要添加双引号了。

  expression为数组时:

<!DOCTYPE>
<html>
<body>

<script type="text/javascript">
var x
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"

for (x in mycars)
{
document.write(mycars[x] + "<br />")
}
</script>
 alert(x); // x的值为2
</body>
</html>

 

转载请注明出处:http://www.cnblogs.com/lflj/

posted @ 2017-03-13 18:05  安静lf  阅读(859)  评论(0编辑  收藏  举报