Skip to content
Wen-Hsiu Hsu's Avatar Image

程式碼之外,還有生活的藝術 前端工程師 / 攝影 / 生活紀錄

  • 文章355
  • 標籤208
Buy Me A Coffee
  • Advanced Web Dev Quiz (27)
  • Deep JavaScript Foundations v3 (69)
  • Full Stack Fundamentals (47)
  • Functional JavaScript First Steps (21)
  • JavaScript Hard Parts v3 (50)
  • JS地下城 (5)
  • Testing Fundamentals (27)
  • TypeScript Fundamentals (28)
  • Web Performance Fundamentals (41)
  • You Might Not Need a Framework (32)
  • 學習經歷 (2)
  • 生活亂談 (2)
  • 程式筆記 (4)

Dev:前端技術與學習筆記

技術分享、踩坑紀錄和筆記,不定期更新

353 篇
2026-10-1717 分鐘閱讀

用 Immer 的 produce 改寫 push、update、pop:在回呼函數裡對 draft 做 push、指派、pop,Immer 在底層保證原陣列不變並回傳新陣列,並比較 Immutable.js 的差異。

2026-10-1632 分鐘閱讀

把會原地修改的 push、pop 與索引指派改寫成回傳新陣列:push 用展開運算子,pop 用 slice(0, -1),update 用帶索引的 map 或 slice,並留意 slice 只做淺拷貝。

2026-10-1618 分鐘閱讀

函數式不原地修改資料,而是產生新版本:用城市改名範例比較直接改陣列與用 map 回傳新陣列,再看持久化資料結構如何以樹狀結構只複製變動部分,降低複製的時空成本。

2026-10-1525 分鐘閱讀

用 head、tail 與展開運算子遞迴實作 pipe:零個函數回傳 identity function,一個就直接回傳,多個時先套用第一個再交給剩下函數的管線,免去倒著讀的巢狀呼叫。

2026-10-1515 分鐘閱讀

函數式程式就是一個函數,靠合成小函數組成:上一個的輸出成為下一個的輸入。用 ender 與 hypeUp 範例看懂部分應用如何重用,以及巢狀呼叫跟閱讀方向相反的執行順序。

2026-10-1427 分鐘閱讀

閉包練習:用 makeMonotonePattern、makeFixedWidthPattern 回傳鎖定顏色或寬度的函數,把三個參數的 diamondPattern 部分應用成可重用的圖案函數,改寫成箭頭函數。

2026-10-1423 分鐘閱讀

閉包讓內層函數記住定義時外層作用域的值,離開作用域後依然記得。用 makeAdjectifier 與 curryGreet 範例,看懂部分應用與柯里化怎麼鎖定參數、做出可重用的函數。

2026-10-1328 分鐘閱讀

先讀懂遞迴版 reduce 怎麼把 initialValue 當累加器、對 tail 反覆遞迴,再寫出 sum 與 max 的 reducer,處理 undefined 的陷阱,並把要記住的東西變成函數輸入。

2026-10-1316 分鐘閱讀

延續遞迴版 filter 的寫法重新實作 map:base case 同樣是空陣列,遞迴情況對 head 套用轉換函數,再用 concat 接上對 tail 遞迴呼叫 map 的結果,全部寫在一行。

2026-10-1223 分鐘閱讀

不用內建 filter 與迴圈,靠遞迴與 length、head、tail、concat 重寫 filter:從空陣列的 base case 寫起,用三元運算子決定第一個元素的去留,再遞迴處理其餘元素。

MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
Photo by Federica Galli on Unsplash