12 個現代 JavaScript 語言特性
JavaScript 每年都在悄悄長出新語法,但多數人還是用三五年前的寫法在寫。這篇整理 12 個「可讀性、安全性、可維護性」都有感提升的現代特性,並附上「舊寫法 vs 新寫法」對照,方便挑幾個先在專案裡替換掉。
其中
Array.at()與?? / ||已有獨立筆記,這裡只做重點與情境,細節請看文末連結。
1. Optional Chaining(?.):安全存取深層屬性
存取巢狀屬性時,只要中途某一層是 null / undefined 就會直接丟錯。?. 讓存取鏈遇到空值時安全回傳 undefined,而不是拋出例外。
// 舊寫法:層層防呆
const city = user && user.address && user.address.city;
// 新寫法
const city = user?.address?.city;
常見情境:API 回應、React props、非同步資料、選填設定物件。也可以搭配函式呼叫 obj.method?.() 與動態索引 obj?.[key]。
2. Nullish Coalescing(??):只在 null / undefined 才 fallback
|| 會把 0、false、'' 這些「falsy 但有效」的值也當成要被取代,容易產生 bug。?? 只在值為 null 或 undefined 時才使用預設值。
const count1 = 0 || 10; // 10(多半不是你要的)
const count2 = 0 ?? 10; // 0(正確保留 0)
??與||的完整比較另有筆記,見 你沒有注意到的 js。