javascript變數範圍

來源:互聯網
上載者:User

標籤:obj   全域變數   find   自己的   nbsp   scope   lock   test   因此   

 1 <!DOCTYPE html> 2 <html> 3 <head> 4     <meta charset="utf-8"> 5     <title></title> 6 </head> 7 <body> 8     <script type="text/javascript"> 9         /*10      一個變數的範圍(scope)是程式原始碼中定義這個變數11      的地區。12      全域變數擁有全域範圍,然而在函數內聲明的變數13      只在函數體內定義,它們是局部變數,範圍是局部性的14      函數參數也是局部變數,它們只在函數體內定義*/15 16      //局部變數的優先順序高於同名的全域變數17      //---->如果在函數內聲明的一個局部變數或者函數參數中帶有變數和全域變數重名18      //---->全域變數就被局部變數所遮蓋19      var scope="global";//聲明一個全域變數20      function checkscope() {21           22           var scope="local";//聲明同一個局部變數23           return scope;//返回局部變數的值,而不是全域變數的值24 25 26      }27       checkscope()28 29       console.log(checkscope()) //"local"30 31       //--->1--全域範圍編寫代碼時可以不寫var語句 ,聲明局部變數時則必須使用var語句32       scope="global";// 聲明一個全域變數,甚至不用var33       function checkscope2(){34           scope="local";  //修改了全域變數35           myscope="local" //這裡顯示地聲明了一個新的全域變數36           return [scope,myscope]; //返回兩個值37       }38       checkscope2()//函數調用39       console.log(checkscope2()) //=>["local","local"]40       //---->2--函數定義是可以嵌套的,由於每個函數都有它自己的範圍 ,因此會出現幾個局部作用嵌套的情況41 42       var scope="global scope"; //全域變數43       function checkscope(){44           var scope="local scope";//局部變數45           function nested(){46               var scope ="nested scope";//嵌套範圍內的局部變數47               return scope; //返回當前範圍內的值48 49           }50           nested() //嵌套函數調用51 52       }53       checkscope() //=>"嵌套範圍"54    55    /*56    函數範圍和聲明提前57     1--->類似C 語言的編程--花括弧內的每一段代碼都具有各自的範圍58           而且變數在聲明它們的程式碼片段之外是不可見的,稱為塊級範圍(block scope)59           javascript中沒有塊級範圍60           javaScript取而代之使用了函數範圍:61           變數在聲明它們的函數體以及這個函數體嵌套任意函數體內都是具有定義的62 63    */64    //----1-->65    function test(o){66        var i=0; //i 在整個函數體內均是有定義的67        if (typeof o=="object"){68            var j=0; //j在函數體內是有定義的,不僅僅是在這個程式碼片段內69            for(var k=0;k<10;k++){ //k在函數體內是有定義的,不僅僅是在內迴圈70                console.log(k);//輸出數字0~971 72 73            }74 75            console.log(k);  //k已經定義了,輸出1076        }77        console.log(j);  //j已經定義了,但可能沒初始化78    }79    //javascript的函數範圍是指在函數內聲明的所有變數在函數體內始終可見80    //意味著變數在聲明之前甚至已經可用,javascript  這個特性被非正式的稱為聲明提前81 82    // javascript 函數裡聲明所有變數都被提前至函數體內部83    var scope="global";84    function f(){85 86        console.log(scope);//輸出undefind ,"而不是“global"87        var scope="local";//變數在這裡賦初始值,但變數本身在函數體內任何地方均是有定義的88        console.log(scope);//輸出“local”89    }90 91 92     </script>93 94 </body>95 </html>

 

javascript變數範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.