深入理解JavaScript-JavaScript 是什麼
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“
參考資料
「其他文章」
- 即刻報名!SegmentFault AIGC Hackathon 黑客馬拉松全新出發!
- SegmentFault 2022 年社群週報 Vol.9
- 社群精選 | 不容錯過的9個冷門css屬性
- 2022最新版 Redis大廠面試題總結(附答案)
- 手寫一個mini版本的React狀態管理工具
- 【vue3原始碼】十三、認識Block
- 天翼雲全場景業務無縫替換至國產原生作業系統CTyunOS!
- JavaScript 設計模式 —— 代理模式
- MobTech簡訊驗證ApiCloud端SDK
- 以羊了個羊為例,淺談小程式抓包與響應報文修改
- 這幾種常見的 JVM 調優場景,你知道嗎?
- 聊聊如何利用管道模式來進行業務編排(下篇)
- 通用ORM的設計與實現
- 如此狂妄,自稱高效能佇列的Disruptor有啥來頭?
- 為什麼要學習GoF設計模式?
- 827. 最大人工島 : 簡單「並查集 列舉」運用題
- 介紹 Preact Signals
- 手把手教你如何使用 Timestream 實現物聯網時序資料儲存和分析
- 850. 矩形面積 II : 掃描線模板題
- Java 併發程式設計解析 | 基於JDK原始碼解析Java領域中的併發鎖,我們可以從中學習到什麼內容?