1. 程式人生 > 程式設計 >詳解JavaScript 作用域

詳解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 作用域的資料請關注我們其它相關文章!