Dev
前端技術、踩坑紀錄與學習筆記
103 篇2026-06-029 分鐘閱讀
整理 JavaScript 強制轉型中最常見的角落案例,追溯大多數 ToNumber 意外行為的共同根源——空字串轉為 0 的設計決策,並說明 boolean 轉數字在鏈式比較運算子中製造的表面正確但實際錯誤的問題。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion #NaN 2026-06-029 分鐘閱讀
說明 Boxing 的運作機制:當你在原始字串或數字上存取 .length 或呼叫方法時,JavaScript 會自動將原始值暫時包裝成對應的物件。這是一種隱式強制轉型,也是「所有東西都是物件」這個誤解的真正來源。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion #Boxing 2026-06-0115 分鐘閱讀
從實際程式碼出發,說明強制轉型早已存在於日常開發中:模板字串、+ 運算子、一元 +、if 條件判斷,背後都是抽象操作在運作。整理字串、數字、boolean 三類轉型的常見陷阱,以及 Kyle Simpson 對顯式與隱式轉型的使用立場。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion 2026-06-019 分鐘閱讀
介紹 ToBoolean 抽象操作的運作方式:它不執行轉換演算法,只做 falsy 清單查表。列出 JavaScript 中完整的七個 falsy 值,並說明為什麼空陣列是 truthy,以及 ToBoolean 與 ToNumber 的關鍵行為差異。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion #ToBoolean 2026-05-3111 分鐘閱讀
介紹 ToNumber 抽象操作的數值轉換規則:空字串轉 0 的設計缺陷、null 與 undefined 的不一致處理,以及物件與陣列透過 ToPrimitive 先字串化再數值化的轉換連鎖機制。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion #ToNumber 2026-05-3111 分鐘閱讀
介紹 toString 抽象操作的字串化規則,包含負零說謊、陣列省略方括號、null 與 undefined 被靜默省略等角落案例,以及物件預設輸出 [object Object] 的來源與覆寫方式。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #ToString #TypeCoercion 2026-05-3011 分鐘閱讀
介紹 ECMAScript 規格書中的抽象操作概念,以及型別轉換的核心機制 ToPrimitive:型別提示(number / string)如何決定 valueOf() 與 toString() 的呼叫順序,以及整個演算法的遞迴特性。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion #ToPrimitive 2026-05-3010 分鐘閱讀
介紹 ECMAScript 規格書中的 Fundamental Objects(基本物件):哪些應搭配 new 建構(Date、RegExp、Error 等)、哪些絕對不該用 new(String、Number、Boolean),以及後者作為強制轉型函式的正確用途。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #TypeCoercion 2026-05-2910 分鐘閱讀
解析 Object.is() Polyfill 的實作思路:如何利用 1 / v === -Infinity 偵測負零、利用 v !== v 偵測 NaN,以及為什麼這兩個角落案例必須在 === 之前優先攔截。
Deep JavaScript Foundations v3
#JavaScript #frontendMasters #deepJavaScriptFoundationsV3 #Polyfill #NaN #NegativeZero 2026-05-2910 分鐘閱讀
透過實作 Object.is() 的 Polyfill,練習處理 === 的兩個例外案例:NaN 的自我不等於特性,以及負零與正零的區別。同時介紹 Polyfill 的標準實作模式。
MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog

