JavaScript基礎概念之----做用域

一、在JS中,做用域就是指 執行代碼的上下文函數

二、有三種類型的做用域:spa

  • 全局做用域
  • 局部做用域(也稱爲「函數做用域」)
  • eval做用域

三、在全局做用域中定義的變量,從任何地方均可以訪問,由於它是做用域鏈中最高層(最後一個)。它的生命週期將跨越整個程序。在JavaScript中沒有使用 var 關鍵字聲明的變量都是全局變量。code

四、在函數內部使用 var 定義的變量,其做用域是局部做用域,局部做用域 只對該函數的其餘表達式是「可見的」,包括嵌套/子函數中的代碼。函數的參數、以及arguments對象,都是屬於局部做用域。對象

//全局做用域
var myVal = 0;

var func = function(){

    //局部做用域
    var myVal = 1;

    var myFunc = function(){

        //局部做用域
        var myVal = 2;
    }
}

//eval做用域
eval('var a = 3');

五、JavaScript中,沒有塊級做用域。如 if/for 沒法建立做用域,所以變量能夠相互覆蓋(除ES6中新語法)。blog

六、在函數中聲明局部變量,必須使用 var 關鍵字,不然變量將會是全局變量。在函數體內 ,局部變量的優先級比同名的全局變量高。生命週期

七、做用域在函數定義時確認,而非調用時。這也叫詞法做用域。ip

八、動態做用域 只存在於代碼執行過程當中作用域

相關文章
相關標籤/搜索