JavaScript的作用域和變量提升

1.變量域

js中只有函數作用域(local scope)和全局作用域(global scope),沒有塊級作用域


2.變量提升

對於val定義的變量和function a(){} ,存在變量提升。

注意:函數表達式不存在變量提升。


實例1:

(function() {

    
    console.log(testc);                                  //打印出undefined

testa(); // 打印出testa testb(); // 報錯:提示undefined is not a function function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc";})();

實例二:


var a = 1; 
function b() { 
     console.log(a);                                  //function a(){}
     a = 10; 
     console.log(a);                                 //10,此時函數作用域中定義了變量a。
    return; 
    function a() {                         //變量提升到最前面,相當於var a=function(){}
    } 
} 
b(); 
console.log(a);                              // 1 ,訪問的是全局變量
 

實例三:

 var a = 1; 
function b() { 
       console.log(a);                              //1,此時a爲全局變量
       a = 10; 
       console.log(a);                                 //10,改變了全局變量的值
       return; 
       function c() {

       } 
} 
  b(); 
 console.log(a);                                          //10


歡迎指正!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章