變數宣告(var, let, const)
在 JavaScript 中,var、let 和 const 是用來宣告變數的關鍵字,但它們在作用域和變數的可變性方面有不同的行為。以下是它們的使用方法和差別:
1. var
- 宣告方式:
var是 JavaScript 中最早的變數宣告方式。 - 作用域:
var具有函式作用域。這意味著如果在一個函式中使用var宣告變數,該變數只能在這個函式內部訪問。如果在函式之外宣告,變數會有全局作用域。 - 重複宣告:可以多次使用
var宣告同一變數,後面的宣告會覆蓋前面的值。
範例:
2. let
- 宣告方式:
let是 ES6(ES2015)引入的新方式,用於取代var的一些問題。 - 作用域:
let具有塊級作用域(block scope)。這意味著變數只能在它所宣告的塊 {} 內有效。 - 重複宣告:不能在相同的作用域內使用
let重複宣告同一變數。
範例:
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用於宣告常量,變數不可重新賦值,適用於需要固定值的情況。
在現代開發中,推薦使用 let 和 const 來取代 var,因為它們的作用域行為更為直觀。