<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開發
    主站蜘蛛池模板: 亚洲美女免费视频| 福利免费观看午夜体检区| 免费看国产精品麻豆| 亚洲大码熟女在线观看| 处破痛哭A√18成年片免费| 亚洲无码一区二区三区| 国内大片在线免费看| 亚洲AV成人无码网天堂| 亚洲第一区精品观看| 国产免费福利体检区久久| 国产亚洲精品高清在线| APP在线免费观看视频| 久久久久亚洲av无码专区导航| 亚洲欧洲免费视频| 亚洲国产情侣一区二区三区| 最近免费中文字幕大全视频| 色五月五月丁香亚洲综合网| 亚洲精品动漫人成3d在线| 国产在线精品观看免费观看| 亚洲AV综合色区无码一区爱AV | 国产91久久久久久久免费| 免费一区二区三区在线视频 | 窝窝影视午夜看片免费| 国产成人A亚洲精V品无码| 久久免费观看国产精品88av| 亚洲国产综合人成综合网站00| 在线精品免费视频| 一个人看的www免费在线视频| 亚洲AV无码成人精品区在线观看| 国产91免费在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 精品免费AV一区二区三区| 亚洲日韩精品无码专区网站| 久草福利资源网站免费| 亚洲人成网站免费播放| 亚洲男女内射在线播放| 亚洲一区在线免费观看| 一区二区视频免费观看| 亚洲综合色区中文字幕| 伊人婷婷综合缴情亚洲五月| 99精品国产免费久久久久久下载|