//作用域鏈
var title ="鏈條";
function
f1()
f3();
//f3鏈條
} f2();
//f2鏈條
} f1();
//f1鏈條
定義:
變數在當前環境,內部環境,內部深層環境都其作用的現象形成了乙個鏈條,這個鏈條就被稱為變數的「作用域鏈」
特點:外部環境變數,可以給內部環境使用
作用域鏈的作用
1.變數必須「先宣告,後使用」
函式可以「先使用,後宣告」,原因是函式有預載入過程,本質還是函式宣告在前,使用在後
//變數必須"先宣告。後使用 "
//同名的函式和變數的執行有順序問題
var getinfo = "school";
getinfo();
//itcast
function
getinfo()
2.內部環境可以訪問外部環境的變數,反之不然
var age = 20;function
f1()
f1();
console.log(height);
//外環境訪問內環境變數(不允許)
3.變數的作用域是宣告時決定的,而不是執行時
var food = "milk";function
f1()
function
f2()
f2();
函式是在全域性宣告的,而呼叫時在f2內部環境呼叫的,由此可以發現,變數的作用域是宣告的時候決定的,而不是在執行時
活動物件 ao active object
1,js**執行是有環境的
2,該環境定義了其有權訪問的其他資料
3,環境有乙個與之相關的活動物件ao
4,環境中所有的變數和函式都是活動物件的屬性
5,全域性環境是最外圍的執行環境,活動物件是window物件
6,執行環境中的**執行完畢後會被銷毀
執行環境以及順序優先順序
var height =175; //外部環境變數
function
f1()
}f2(180);
}f1();
優先順序 內部環境變數》本環境函式》形參》 外部環境變數全域性變數和區域性變數
全域性變數:全域性變數 其是活動物件 window的成員資訊
區域性變數:其在一定範圍內可以看做是"全域性變數",其在本環境,內部環境,內部深層環境都可以被訪問
作用域 作用域鏈
理解 就是一塊 地盤 乙個 段所在的區域 它是靜態的 相對於上下文物件 在編寫 時就確定了 分類全域性作用域 函式作用域 沒有塊作用域 es6有了 作用隔離變數,不同作用域下同名變數不會有衝突 區別1全域性作用域之外,每個函式都會建立自己的作用域,作用域在函式定義時就已經確定了。而不是在函式呼叫時 ...
作用域和作用域鏈
全域性作用域 全域性的變數執行環境 函式作用域 函式內部的變數執行環境 每個函式都有自己的執行環境,當執行流進入乙個函式時,函式的環境就會被推入乙個環境棧中。函式執行之後,棧將環境彈出,把控制權返回給之前的執行環境。全域性作用域只要頁面不解除安裝,就一直存在,不釋放。函式每次在呼叫時,都會形成乙個作...
作用域和作用域鏈
var a 10 function f1 x,y f1 console.log b 此時b輸出5,因為b 5為隱式的全域性變數 在函式外面使用var 宣告的變數都是全域性變數,作用範圍是程式執行的地方.全域性作用域 函式除外 函式的形參是區域性變數 在函式內部,不使用var 定義的變數,叫隱式全域性...