JavaScript(曾用名 Mocha、LiveScript、JScript、ECMAScript)是全球最普及的程式語言,幾乎每台個人電腦都安裝並活躍運行著至少一個 JS 引擎。然而,極少人知道它是一門優雅的動態物件導向通用程式語言。為何這門語言被誤解如此之深?道格拉斯·克羅克福德為我們層層剝開真相。
大括號、for 迴圈讓它像過程式語言,但基因裡流著函數式血統:
這使其更接近 Lisp/Scheme,而非 C/Java。
最初為 Netscape Navigator 設計,成功後成為所有瀏覽器標配。這導致它被「定型」為唯網頁腳本,實則適合大量非 Web 應用。克羅克福德喻其為程式語言界的「喬治·里夫斯(超人扮演者)」——被角色掩蓋了真實能力。
| 缺陷 | 影響 | 補救 |
|---|---|---|
+ 重載(加法/串接)且強制型別轉換 | 易產生非預期結果 | 嚴格使用 ===、parseInt 等 |
with 敘述 | 語義模糊、效能差 | 避免使用 |
| 保留字策略過嚴 | 限制識別符命名 | 無完美方案 |
| 自動分號插入 | 掩蓋語法錯誤 | 養成明確分號習慣 + Lint 工具 |
| 字面正則表達式符號 | 易混淆 | 小心使用 |
整體設計合理,幸而優秀的 Lint 工具能緩解大多數問題。ECMA 委員會卻似乎更熱衷製造新問題而非修復舊問題。
ECMA-262 規格品質極差:難讀、難懂。導致作者無法依賴標準文檔深入理解,間接催生爛書。ECMA 與 TC39 應深感羞愧。
多數 JS 寫作者非受訓程式設計師,缺乏紀律。但 JS 表達力強大,讓他們仍能寫出有用程式,反被誤認為「只適合業餘愛好者」。這是嚴重誤讀——專業開發者同樣能用 JS 構建企業級系統。
JavaScript 的「被誤解」源於名字行銷、早期實作、文檔與教材的多重失誤。剝離偏見,你將看到一門擁有第一級函數、閉包、原型繼承、動態特性的強大語言。下一次聽到「JS 只是玩具語言」,請微笑著丟出一個閉包實現的私有計數器——真相往往藏在程式碼裡。