引子: JS 定義和誕生的原因,以及缺陷。
0. 前言
0-1. 定義
來自 WikiPedia 上對 JavaScript 的定義:
JavaScript(通常縮寫為 JS)是一種高級的、解釋型的編程語言。JavaScript 是一門基於原型、函數先行的語言,是一門多範式的語言,它支持麵向對象編程,命令式編程,以及函數式編程。它提供語法來操控文本、數組、日期以及正則表達式等,不支持 I/O,比如網絡、存儲和圖形等,但這些都可以由它的宿主環境提供支持。它已經由 ECMA(歐洲電腦製造商協會)通過 ECMAScript 實現語言的標準化。它被世界上的絕大多數網站所使用,也被世界主流瀏覽器(Chrome、IE、Firefox、Safari、Opera)支持。
那麼 JS 是如何誕生的呢?
0-2. 誕生
誕生於1996 年的 JavaScript, 其設計者BrendanEich僅花了 10 天 時間便創造而出。
誕生原因:當時網景公司的發展決策是「未來的網頁腳本語言必須看上去與Java足夠相似,但是比Java簡單,使得非專業的網頁作者也能很快上手」,這個決定將 Perl、Python 等非麵向對象編程的語言都排除了,但BrendanEich 對 Java 毫無興趣,同時又臨危受命,所以僅花費 10 天時間潦草設計出了 JavaScript。
倉促的設計時間、第一例同時結合函數式編程和麵向對象編程的語言以至於沒有設計先例可借閱、過早的標準化以至於沒有時間調整設計, 這三個原因導致 JS 的設計不夠完善,那麼 JS 有哪些設計缺陷呢?
【過早的標準化】:設計缺陷尚未暴露就推行標準
1995.5,JS 設計完成
1995.10,解釋器開發完成
1995.12,進入市場,廣泛使用
1996.8,微軟強推 Jscript
1996.11,網景申請 JS 的國際標準
1997.6,第一個國際標準 ECMA-262 正式頒布
0-3. 設計缺陷
(1). 不適合大型項目(現已解決)
JS 沒有命名空間,難以模塊化;允許同名函數的重複定義,後麵覆蓋前麵,不利於模塊化加載;
解決方案:ES6Module。import 命令用於輸入其他模塊提供的功能,同時創造命名空間(namespace),防止函數名衝突。
(2). 隱式類型轉換
\u0027\u0027 \u003d\u003d \u00270\u0027 // false