初級 免費 ⏱ 15:00

02-1 變數革命:為什麼 var 已死?

為什麼 2026 年絕對不該再用 var?一次搞懂 let 與 const 的正確使用時機,以及「預設 const」的現代開發準則。

JavaScriptVariablesBest Practices

02-1 變數革命:為什麼 var 已死?

👋 **老師的話 (Script)**: "嘿,歡迎回到課程! 如果你在網路上找到的教學還在教你用 `var` 來宣告變數,請立刻關掉那個網頁。 那是十年前的寫法了!

在 2026 年,我們只有兩個選擇:letconst。 而且我會告訴你一個資深工程師的秘密:95% 的情況下,你應該只用 const 為什麼?讓我們看下去。“

1. 歷史的眼淚:var 的災難

以前我們用 var,但我現在要告訴你它為什麼被淘汰。

  • 你可以重複宣告var x = 1; var x = 2; 竟然不會報錯?這在大型專案是災難。
  • 它會「洩漏」出去var 沒有區塊作用域 (Block Scope)。
// ❌ 錯誤示範 (以前的寫法)
if (true) {
  var secret = "I am secret";
}
console.log(secret); // 竟然印出來了!變數污染了全域!

2. 現代救星:letconst

ES6 (2015) 之後,JavaScript 終於正常了。

  • Block Scope:變數只活在大括號 {} 裡面。出了括號就死掉了(記憶體回收),這才安全。

規則一:預設使用 const (常數)

只要這個變數之後不會被「重新賦值 (=)」,就一律用 const。 這代表「承諾」:我不打算改變它。

const birthYear = 1995;
// birthYear = 1996; // ❌ 報錯!保護你不會不小心改到重要資料。

規則二:真的要變,才用 let

只有像計數器、開關狀態這種真的會變的東西,才用 let

let score = 0;
score = 10; // ✅ 合法

3. LAB 01: 變數生存範圍實測

🧪 練習時間 1. 打開 VS Code,建立 02-1-scope.js。 2. 輸入以下程式碼並用 Bun 執行:
if (true) {
  let ghost = "👻";
  const zombie = "🧟";
  var monster = "👹";
}

console.log(monster); // 印出 👹 (這就是 var 的壞處!)
// console.log(ghost); // ❌ 報錯:ghost is not defined (這才是對的!)

🚀 下一節課 搞懂了容器(變數),我們接下來要看容器裡面可以裝什麼「東西」。 JavaScript 的型別系統在 2026 年有了新成員:BigIntSymbol。 這些是什麼?下一節揭曉!
🧠

Knowledge Check

選擇答案後點「提交答案」查看結果