深入理解JavaScript-JavaScript 是什麼

語言: CN / TW / HK

Brendan Eich 花了 10 天時間,設計完成的一門語言。它是個大雜燴,參考了多個語言,例如:

  • 基本語法:借鑑 C 語言和 Java 語言
  • 資料結構:借鑑 Java 語言,包括將值分成原始值和物件兩大類
  • 函式的用法:借鑑 Scheme 語言和 Awk 語言,將函式當作第一等公民,並引入閉包
  • 原型繼承模型:借鑑 Self 語言(Smalltalk 的一種變種)
  • 正則表示式:借鑑 Perl 語言
  • 字串和陣列處理:借鑑 Python 語言

與此同時,它是一門動態、弱型別的程式語言,非常適合面向物件和函式式的程式設計風格

動態語言,與之對應的是靜態語言,靜態語言在編譯時變數的資料型別就確定的;而動態語言則是在執行時確定資料型別

強型別與弱型別,強型別語言一旦變數的型別被確定,就不能被轉化,而弱型別的變數型別由應用上下文確定

特點

基於原型繼承,即每個物件擁有一個原型物件,物件又以其原型為模板,從原型繼承方法和屬性。原型物件也是物件,也擁有原型,並從它的原型繼承方法和屬性,如此型別,形成原型鏈。我們會在後文對原型、繼承分別進行詳細介紹

函式是一等公民,不僅能像物件一樣使用,還擁有函式傳值、作為返回值返回。我們亦在後文介紹

函式作用域,函式作用域為詞法作用域,可形成閉包,我們會在後文繼續

由什麼組成

JavaScript = ECMAScript + 文件物件模型(DOM)+ 瀏覽器物件模型(BOM)

ECMAScript:語言本身,由語法、型別、語句、關鍵字、保留字、操作符、全域性物件組成

文件物件模型(DOM):操作 HTML 的 API,名字又多又長,可查文件——MDN

瀏覽器物件模型(BOM):操作 瀏覽器的 API,如 Window、Screen、Location、History、Navigator、彈出框、Timing、Cookies

ECMAScript 版本

時間點 版本
1997.7 ECMAScript 1.0釋出
1998.6 ECMAScript 2.0釋出
1999.12 ECMAScript 3.0釋出
2007.10 ECMAScript 4.0草案發布,發生分歧
2008.7 改善一部分4.0功能,釋出ECMAScript 3.1
2009.12 ECMAScript 5.0正式釋出
2011.6 ECMAScript 5.1版釋出
2013.12 ECMAScript 6 草案發布
2015.6 ECMAScript 6 正式釋出,並且更名為“ECMAScript 2015”

自此之後,往後每年發版一個版本,在那年發版就帶上年份,如 2022年釋出,稱為”ECMAScript 2022“,2023年釋出”ECMAScript 2023“

參考資料