Skip to content

變數宣告(var, let, const)

在 JavaScript 中,varletconst 是用來宣告變數的關鍵字,但它們在作用域和變數的可變性方面有不同的行為。以下是它們的使用方法和差別:

1. var

  • 宣告方式:var 是 JavaScript 中最早的變數宣告方式。
  • 作用域:var 具有函式作用域。這意味著如果在一個函式中使用 var 宣告變數,該變數只能在這個函式內部訪問。如果在函式之外宣告,變數會有全局作用域。
  • 重複宣告:可以多次使用 var 宣告同一變數,後面的宣告會覆蓋前面的值。

範例:

var x = 10;
if (true) {
  var x = 20;
  console.log(x); // 20
}
console.log(x); // 20

2. let

  • 宣告方式:let 是 ES6(ES2015)引入的新方式,用於取代 var 的一些問題。
  • 作用域:let 具有塊級作用域(block scope)。這意味著變數只能在它所宣告的塊 {} 內有效。
  • 重複宣告:不能在相同的作用域內使用 let 重複宣告同一變數。

範例:

let y = 10;
if (true) {
  let y = 20;
  console.log(y); // 20
}
console.log(y); // 10

3. const

  • 宣告方式:const 是 ES6 中引入的,用於宣告常量。宣告後,變數的值不能再被重新賦值。
  • 作用域:const 也具有塊級作用域。
  • 重複宣告:不能在相同的作用域內使用 const 重複宣告同一變數。
  • 不可重新賦值:一旦給 const 變數賦值後,就不能再更改這個值。如果 const 變數是物件或陣列,其內部的成員還是可以改變的。

範例:

const z = 10;
// z = 20; // 錯誤:不能重新賦值

const arr = [1, 2, 3];
arr.push(4); // 合法,因為我們是改變陣列的內容
console.log(arr); // [1, 2, 3, 4]

總結

  • var 適用於較舊的程式碼,具有函式作用域。
  • let 具有塊級作用域,更推薦用於現代 JavaScript 程式碼中。
  • const 用於宣告常量,變數不可重新賦值,適用於需要固定值的情況。

在現代開發中,推薦使用 letconst 來取代 var,因為它們的作用域行為更為直觀。