constlet

比較

constlet 的共通特性:

  • 區塊作用域(Block Scope),不像 var函式作用域(Function Scope)
  • 宣告的變數 不會變成 window 物件的屬性(與 var 不同)
  • 在相同作用域中,不能重新宣告相同名稱的變數
{
  let a = 10;
  const b = 20;
}
console.log(a, b); // ❌ 錯誤:a 和 b 僅在區塊內可用
function example() {
  if (true) {
    var test = 123;
  }
  console.log(test); // ✅ 有效:var 具函式作用域,並會提升(hoisting)
}
example();

使用建議

  • 優先使用 const:預設使用 const,除非變數需要重新賦值,才使用 let
  • 避免使用 var:容易造成變數提升與作用域錯誤,已不建議使用

const(常數)

特性

  • 不可重新賦值
  • 區塊作用域
  • 宣告時必須初始化
const name = "Jack";
name = "Tom"; // ❌ 錯誤:const 不能重新賦值

⚠️ 注意:const 宣告的物件或陣列,其內容仍可變更

const user = { age: 25 };
user.age = 26; // ✅ 可以修改物件屬性

const roles = [];
roles.push("admin"); // ✅ 可以新增陣列元素
roles.push("editor"); // ✅ 繼續新增

let(變數)

特性

  • 可重新賦值
  • 區塊作用域
  • 可以宣告後再初始化
let age = 25;
age = 26; // ✅ 可以重新賦值

let score;
score = 100; // ✅ 可先宣告後初始化