在JavaScript中,變數宣告決定了在程式碼中如何使用和修改變數。在ES6之前,只能使用var來宣告變數 ,但現在有兩個新的關鍵字 let 和 const,它們提供了更多的選擇和靈活性。

var

var是ES6以前的變數宣告方法,它可以用於宣告全域變數和區域變數。

var宣告的變數可以被重複宣告,因此可能會導致變數覆蓋的問題

可能會存在區域變數覆蓋全域變數,或者在for loop中循環變數洩漏為全域變數的副作用發生。

此外,var宣告的變數存在"變數提升"現象,這意味著它們可以在宣告之前被訪問。

var x = 10;
var x = 20; // 可以被重複宣告

function test() {
  console.log(y); // undefined
  var y = 30;
}

let

let是一種新的區域變數宣告方法,它在宣告後不能被重複宣告。let宣告的變數不存在"變數提升"現象,因此必須在宣告之後才能訪問變數

let x = 10;
let x = 20; // SyntaxError: Identifier 'x' has already been declared

function test() {
  console.log(y); // ReferenceError: Cannot access 'y' before initialization
  let y = 30;
}

const

const是一種新的常數宣告方法,它可以用於宣告不可更改的值。const宣告的變數必須在宣告時進行初始化並且不能被重新賦值。const宣告的變數不存在"變數提升"現象。

const x = 10;
x = 20; // TypeError: Assignment to constant variable.

const y; // SyntaxError: Missing initializer in const declaration

使用 let 和 const 宣告變數可以讓程式碼更為清晰和易於維護。如果需要修改變數值,變量宣告使用 let;如果需要定義不可變的值,變量宣告使用 const。