<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    于吉吉的技術博客

    建造高性能門戶網

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      65 隨筆 :: 6 文章 :: 149 評論 :: 0 Trackbacks
    今天在寫個一段js代碼出現了變量值出現異常的問題,把代碼做了提取,簡單的如下面

    <script>
    function a1(){
        
    var a = [{"name":"1"},{"name":"2"},{"name":"3"}];
        
    for(i=0;i<a.length;i++){
            alert(i
    +" first");
            a2(a[i]);
            alert(i
    +" second");
        }
    }
    function a2(obj){
        
    for (i in obj) {
        }
        
    return "hello";
    }
    </script>
    <body onload="a1();">


    在第一次alert(i)是 0 first
    在第二次alert(i)是 name second

    為什么會出現這樣的情況,明明在a2函數傳進去的是實參,并且也沒有對參數a[i]進行改寫
    在反復查看問題后發現是i變量的問題,在函數a1()中,i被定義成為了全局變量,而在函數a2()中,i又是一個全局變量,所以在a2的for (i in obj) 循環中i被重新賦值成"name"
    這個烏龍是沒有養成在一些臨時函數定義成局部變量造成的,特別是在一些for,while,if的操作中,臨時變量必須定義成局部變量否則會出現全局變量被改寫的情況。

    再回顧一下定義全局變量/局部變量的規則
    在函數外部,使用var,或直接使用變量,如var a=1;或 a=1; 就定義了全局變量
    在函數內部,直接使用變量,如a=1;也定義了全局變量
    在函數內部,使用var進行定義就是局部變量

    修改一下上面的代碼

    <script>
    function a1(){
        
    var a = [{"name":"1"},{"name":"2"},{"name":"3"}];
        
    for(var i=0;i<a.length;i++){
            alert(i
    +" first");
            a2(a[i]);
            alert(i
    +" second");
        }
    }
    function a2(obj){
        
    for (var i in obj) {
        }
        
    return "hello";
    }
    </script>
    <body onload="a1();">
    posted on 2011-06-02 16:11 陳于喆 閱讀(969) 評論(0)  編輯  收藏 所屬分類: web開發
    主站蜘蛛池模板: 99精品视频在线视频免费观看 | 日本免费一区二区三区四区五六区 | 亚洲欧美日韩中文二区| 亚洲毛片免费视频| 五级黄18以上免费看| 免费国产精品视频| 美女黄网站人色视频免费| 国产成人免费a在线视频色戒| 亚洲AV成人精品一区二区三区| 免费无码黄网站在线观看| 精品久久久久久亚洲中文字幕| 四虎精品亚洲一区二区三区| 亚洲精品成人网站在线播放| 120秒男女动态视频免费| 亚洲av产在线精品亚洲第一站| 国内免费高清在线观看| 国产精品亚洲精品日韩电影| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 久久99国产综合精品免费| 亚洲第一成年网站大全亚洲| 欧洲黑大粗无码免费| 香蕉视频免费在线| 亚洲理论电影在线观看| 91福利免费体验区观看区| 亚洲人成网站免费播放| 亚洲国产精品人人做人人爱| APP在线免费观看视频| 亚洲日本乱码一区二区在线二产线| 女人18毛片特级一级免费视频| 人妻仑乱A级毛片免费看| 亚洲AV无码专区国产乱码4SE| 日韩亚洲国产高清免费视频| 亚洲gay片在线gv网站| 亚洲中文字幕无码一区| 18禁止观看免费私人影院| 阿v免费在线观看| 亚洲韩国—中文字幕| 国产大片51精品免费观看| 日本免费高清视频| jizzjizz亚洲日本少妇| 久久精品国产亚洲av麻|