JavaScript 重修就好

胡立(Huli) 著

  • 出版商: 深智
  • 出版日期: 2025-07-19
  • 定價: $760
  • 售價: 7.9$600
  • 語言: 繁體中文
  • 頁數: 464
  • ISBN: 6267757048
  • ISBN-13: 9786267757048
  • 相關分類: JavaScript
  • 尚未上市,歡迎預購

  • JavaScript 重修就好-preview-1
  • JavaScript 重修就好-preview-2
  • JavaScript 重修就好-preview-3
  • JavaScript 重修就好-preview-4
  • JavaScript 重修就好-preview-5
  • JavaScript 重修就好-preview-6
  • JavaScript 重修就好-preview-7
  • JavaScript 重修就好-preview-8
  • JavaScript 重修就好-preview-9
  • JavaScript 重修就好-preview-10
  • JavaScript 重修就好-preview-11
  • JavaScript 重修就好-preview-12
  • JavaScript 重修就好-preview-13
  • JavaScript 重修就好-preview-14
  • JavaScript 重修就好-preview-15
  • JavaScript 重修就好-preview-16
  • JavaScript 重修就好-preview-17
JavaScript 重修就好-preview-1

商品描述

這不是一本給初學者的JavaScript教科書。相反地,它是寫給那些已經學過JavaScript卻依然感到卡關,對某些觀念依然模糊的開發者。

就像大學課程一樣,或許都是死背答案,考試時題目一變就被當掉了。這時該怎麼辦呢?重修就好。

那為什麼要再學一次呢?因為我相信許多人第一次都沒有真的把這些觀念學進去,只是為了應付面試而已,面試結束就忘了。這也合理,因為許多地方都是教你這些知識,卻沒告訴你要用在哪裡。

這本書共分成了五個章節,分別是:

1. 從重新認識JavaScript開始

2. 重要與不重要的資料型別

3. 物件與有趣的prototype

4. scopeclosure以及this談底層運作

5. 理解非同步

每個章節都對應到了一些令初學者很頭痛的話題,而你至少可以找到底下疑問的解答:

1. 知道this是什麼要幹嘛?

2. 知道[]+{}的結果是重要的嗎?

3. Closure到底可以用在哪裡?

4. Prototype chain好複雜,為什麼又是prototype又是__proto__

5. 理解Event loop中的microtask可以幹嘛?

6. Call by valuecall by reference還是call by sharing,重要嗎?

7. 我怎麼知道自己學習的東西是不是對的?

8. 我學這些知識在實際開發中到底有什麼用?

本書不教你死背知識,而是給你一個合理的學習理由,並且藉由實際的案例來帶入這些知識,告訴你為什麼要學習,在開發時又會用在哪裡。

有些人會說「以後AI要取代軟體工程師了,還需要學這些嗎?」,如果你現在就打算轉行,那確實不需要了。但我相信AI無法完全取代,還是要有人負責debug跟確認AI寫的東西,並負起責任。當僧多粥少時,誰的硬實力比較強,就有越多的優勢,而這就是在AI時代下繼續學習的理由。

在《JavaScript重修就好》這本書中,會秉持著重修的精神,相同的語法、相同的知識,但是為讀者帶來嶄新的體驗,並且發現這些知識背後的關聯以及學習的美好之處。我們會逐個擊破那些JavaScript中的重要概念,更進一步去理解它的原理以及特別之處,還有在實際開發上的應用。

作者簡介

Huli,你不一定記得這個名字,但是在Google搜尋時很有可能點進去過我寫的文章。喜歡寫code,喜歡寫部落格,有些人的興趣是旅遊、露營、看電影,而寫部落格就是我的興趣。不為了什麼特殊目的而寫,單純只是寫了會快樂。

JavaScript的語法比對英文文法還熟,會的JavaScript小技巧比背過的英文單字還多。閱讀ECMAScript規格書得到的快樂比看了幾本龍傲天轉生爽作來得更長久,喜歡獲得知識時的那個Aha! moment

參加過一些研討會給出自己喜歡的講題,如CYBERSECMOPCONJSDC以及Modern Web Conference等等,有時講資安,有時講前端。

 

Blog: https://blog.huli.tw

Facebook: https://www.facebook.com/huli.blog

目錄大綱

0 導讀

前言

為什麼想寫這本書

AI時代下,學習的理由是什麼

本書架構

關於作者

致謝

 

▌第1 從重新認識JavaScript開始

1.1 JavaScript的誕生:它跟Java真的無關嗎?

1.2 JavaScript的包袱:想丟也丟不掉

SmooshGate事件

Don't break the Web:別把網站弄壞!

被淘汰的HTML標籤

1.3 JavaScript的真理:該如何區分知識的真偽?

初探ECMAScript

String.prototype.repeat的實作

知名的typeof bug

你所不知道的註解

來看看JavaScript引擎的實作

1.4 JavaScript的執行環境:為什麼這個不能用?

薛丁格的函式

什麼是runtime

從不同runtime學習JavaScript

小結

 

▌第2 重要與不重要的資料型別

2.1 JavaScript 到底有幾種資料型別?

2.2 Number BigInt

數字與字串的轉換

浮點數與IEEE 754

特別的NaN

數字的範圍

有趣的位元運算

2.3 編碼與字串

從傳紙條學習編碼

真實世界中的編碼

字串與UTF-16UCS-2

有趣的字串冷知識

2.4 函式與arguments

腦力激盪時間

有趣的function

自動綁定的變數

多種建立函式的方法

腦力激盪解答時間

2.5 型別轉換與魔法

轉成原始型別的Magic methods

從被講爛的=====中找到新鮮事

更多的魔術方法

看不見的Boxing

小結

 

▌第3 物件與有趣的 prototype

3.1 從物件導向理解prototype

探究原理

模擬尋找key的過程

constructornew

3.2 獨特的攻擊手法:Prototype pollution

Prototype pollution是怎麼發生的?

script gadgets

防禦方式

3.3 管他call by value還是reference

求值策略(Evaluation strategy)的紛爭

名詞真的這麼重要嗎?

理解機制,而非名詞

3.4 有趣的defineProperty Proxy

更多的屬性以及Object.defineProperty

Vue2Object.defineProperty

物件的代理:Proxy

Proxy的其他應用

3.5 淺層複製與深層複製

自己做一個深層複製

lodash原始碼中學習

內建的深層複製structuredClone

小結

 

▌第4 scopeclosure this談底層運作

4.1 JavaScript如何解析變數?談談scope

常見的scope問題

4.2 Hoisting 不是重點,理解底層機制才是

V8引擎的執行流程

V8的加速秘密武器:TurboFan

來看變數宣告的規格吧

4.3 Closure的實際運用

環境隔離的妙用

幫函式加上功能

被忽略的記憶體怪獸

4.4 This 是什麼,真的重要嗎?

Javathis開始

走樣的this

刻意改變this

小結

 

▌第5 理解非同步

5.1 逼不得已的非同步

阻塞與非阻塞

同步與非同步

瀏覽器上的同步與非同步

你以為陌生卻熟悉的callback

Callback function的參數

5.2 理解非同步的關鍵:Event loop

什麼是event loop

從範例中學習event loop

解答時間

5.3 Promiseasync/await

Promise的基本使用方式

讓非同步看起來像同步:asyncawait

該如何理解async/await的執行順序?

再多瞭解Promise一點

5.4 Promise開始擴充event loop模型

Taskmicrotask

Event handler的同步與非同步

Event loop與畫面的更新

React以及Vue中的應用

Event loop的規格

小結

 

▌結語

 

▌附錄

授權條款

ECMAScript® 2024 Language Specification

facebook/react

ungap/structured-clone

v8/v8

vercel/next.js

vuejs/corezloirock/core-js