• 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/

  • 相关阅读:
    CSS3很强大
    Notepad++关闭时自动保留,不弹出提示保存对话框
    数据库中更新或插入表记录
    手动指定网卡优先顺序方法
    在Excel中转换时间戳(timeStamp)
    format z: /p:3 & cipher /w z:abc
    修改eclipse中M2_REPO变量值
    Windows 10 主题的图片位置
    MySQL中 delete from 时提示 1064 错误。
    left join 中 on 与 where 理解
  • 原文地址:https://www.cnblogs.com/lflj/p/6544287.html
Copyright © 2020-2023  润新知