詳解JavaScript 作用域
作用域是可訪問變數的集合。
JavaScript 作用域
在 JavaScript 中,物件和函式同樣也是變數。
在 JavaScript 中,作用域為可訪問變數,物件,函式的集合。
JavaScript 函式作用域: 作用域在函式內修改。
JavaScript 區域性作用域
變數在函式內宣告,變數為區域性作用域。
區域性變數:只能在函式內部訪問。
// 此處不能呼叫 carName 變數 function myFunction() { var carName = "Volvo"; // 函式內可呼叫 carName 變數 }
因為區域性變數只作用於函式內,所以不同的函式可以使用相同名稱的變數。
區域性變數在函式開始執行時建立,函式執行完後區域性變數會自動銷燬。
JavaScript 全域性變數
變數在函式外定義,即為全域性變數。
全域性變數有 全域性作用域: 網頁中所有指令碼和函式均可使用。
var carName = " Volvo"; // 此處可呼叫 carName 變數 function myFunction() { // 函式內可呼叫 carName 變數 }
如果變數在函式內沒有宣告(沒有使用 var 關鍵字),該變數為全域性變數。
以下例項中 carName 在函式內,但是為全域性變數。
// 此處可呼叫 carName 變數 function myFunction() { carName = "Volvo"; // 此處可呼叫 carName 變數 }
JavaScript 變數生命週期
JavaScript 變數生命週期在它宣告時初始化。
區域性變數在函式執行完畢後銷燬。
全域性變數在頁面關閉後銷燬。
函式引數
函式引數只在函式內起作用,是區域性變數。
HTML 中的全域性變數
在 HTML 中,全域性變數是 window 物件: 所有資料變數都屬於 window 物件。
//此處可使用 window.carName function myFunction() { carName = "Volvo"; }
你知道嗎?
你的全域性變數,或者函式,可以覆蓋 window 物件的變數或者函式。
區域性變數,包括 window 物件可以覆蓋全域性變數和函式。
補充
ES6 中的 let 關鍵字
let 允許你宣告一個作用域被限制在塊級中的變數、語句或者表示式。與var關鍵字不同的是,它宣告的變數只能是全域性或者整個函式塊的。
let 語法:
let var1 [= value1] [,var2 [= value2]] [,...,varN [= valueN]];
let 宣告的變數只在其宣告的塊或子塊中可用,這一點,與 var 相似。二者之間最主要的區別在於 var 宣告的變數的作用域是整個封閉函式。
let 和 var 的區別程式碼例項:
function varTest() { var x = 1; if (true) { var x = 2; // 同樣的變數! console.log(x); // 2 } console.log(x); // 2 } function letTest() { let x = 1; if (true) { let x = 2; // 不同的變數 console.log(x); // 2 } console.log(x); // 1 }
以上就是詳解JavaScript 作用域的詳細內容,更多關於JavaScript 作用域的資料請關注我們其它相關文章!