作用域是可存取變數的集合。
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之作用域的詳細內容。更多資訊請關注PHP中文網其他相關文章!