1

JavaScript 高级程序设计第 4 版,温故知新(ECMAScript)

 2 years ago
source link: https://blog.51cto.com/u_13961087/5372159
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

JavaScript 高级程序设计第 4 版,温故知新(ECMAScript)

原创

JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。

中文译版于 2020 年发售,妥妥的“新鲜出炉”,你要是问本瓜:当今学 JavaScript 哪家强,我只能说:红宝书第 4 版最在行。

于是乎,借着更文契机,本瓜将开启一个小系列,带你重看一遍高级程序设计4(先前只是跳着跳着看),将抽取精华,用最简单的话解释核心点、尽量把握全局、快速过一遍的同时,记录与工友们分享~~

1995 年,作为 JavaScript 的创作者,Brendan Eich 绝对想不到,他仅用 10 天写出的脚本语言,竟然在 25 年以后,连续 10 年蝉联“最常用编程语言”榜首。

很多人还以刻板的印象认为 JavaScript 是“玩具语言”,但随着它的不断发展,而今它绝对是最有必要学习的一门编程语言。JavaScript 有着强大的语言特性,对于网页和移动开发者来说,深入理解尤为必要。

在第一章 《什么是 JavaScript》很详细的阐述了 JavaScript 演进历史,这里用箭头符号简单说明过程:

💡 Mocha ⇒ LiveScript ⇒ JavaScript(Netscape Navigator)、IE(JScript)⇒ ECMAScript

言而总之,就是网景浏览器与IE浏览器大战,最终促成了 ECMAScript 的诞生。

有意思的是,本瓜之前理解:JavaScript 包含三个部分,ECMAScript + DOM + BOM,这里也确实这样画了一张图,

JavaScript 高级程序设计第 4 版,温故知新(ECMAScript)_javascript

但这种包含的理解应该是错误的;语言是实现标准,而不是包含标准;其它语言也可以实现这些标准,比如 Adobe ActionScript 同样也实现了 ECMAScript ;

所以,应该说:JavaScript 实现了 ECMAScript 标准,同时还实现了 DOM 和 BOM。

那 ECMAScript(​ ​ecma-262​​)到底定义了什么?要点如下:

CV 一个历史版本及主要发布特性:

与前版本的差异

1997年6月

1998年6月

格式修正,以使得其形式与ISO/IEC16262国际标准一致

1999年12月

强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变

由于关于语言的复杂性出现分歧,第4版本被放弃,其中的部分成为了第5版本及Harmony的基础;由ActionScript实现

2009年12月

新增“严格模式(strict mode)”,一个子集用作提供更彻底的错误检查,以避免结构出错。澄清了许多第3版本的模糊规范,并适应了与规范不一致的真实世界实现的行为。增加了部分新功能,如getters及setters,支持JSON以及在对象属性上更完整的反射

2011年6月

ECMAScript标5.1版形式上完全一致于国际标准ISO/IEC 16262:2011。

2015年6月

ECMAScript 2015(ES2015),第 6 版,最早被称作是 ECMAScript 6(ES6),添加了类和模块的语法,其他特性包括迭代器,Python风格的生成器和生成器表达式,箭头函数,二进制数据,静态类型数组,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。作为最早的 ECMAScript Harmony 版本,也被叫做ES6 Harmony。

2016年6月

ECMAScript 2016(ES2016),第 7 版,多个新的概念和语言特性

2017年6月

ECMAScript 2017(ES2017),第 8 版,多个新的概念和语言特性

2018年6月

ECMAScript 2018 (ES2018),第 9 版,包含了异步循环,生成器,新的正则表达式特性和 rest/spread 语法。

2019年6月

ECMAScript 2019 (ES2019),第 10 版

2020年6月

ECMAScript 2020 (ES2020),第 11 版

介绍了下 ECMAScript ,然后就来到我们熟悉的 DOM:Document Object Model;

DOM 将整个页面抽象为一组分层节点。使用 DOM API,可以轻松地删除、添加、替换、修改节点。让开发者可以随心所欲地控制网页的内容和结构。

DOM 历史上,有 4 个版本:

DOM Level 1

映射文档结构

DOM Level 2

增加了对鼠标和用户界面事件、范围、遍历、层叠样式表(CSS)

DOM Level 3

增加以统一的方式加载和保存文档的方法

DOM Living Standard(DOM Level 4)

包括 Mutation Observers

咱就是,不得不感慨,这些版本的历史迭代是导致前端难学的原因之一 QAQ

接着行文来到 BOM —— 浏览器对象模型,我们也很熟悉,它提供的能力是关于浏览器的:

  1. 弹出新浏览器窗口的能力;
  2. 移动、缩放和关闭浏览器窗口的能力;
  3. navigator 对象,提供关于浏览器的详尽信息;
  4. location 对象,提供浏览器加载页面的详尽信息;
  5. screen 对象,提供关于用户屏幕分辨率的详尽信息;
  6. performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
  7. 对 cookie 的支持;
  8. 其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject。

其实在 HTML5 之前,各大浏览器对于 BOM 的实现是不一样的,HTML5 改善了这一困境。

小结一句吧:

有人问:学习 JavaScript 有必要了解它的历史吗?本瓜觉得是必要的。了解后,也会发现:还挺有意思的~~

这里觉得有点遗憾的是,关于:JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和 Scheme(一门函数式编程语言)的影响,在语法结构上它又与C语言相似,高程4 里并没有展开说明,如果能针对这部分历史展开讲讲,就更 nice 了!!

OK,以上便是本篇分享。 觉得不错点个赞吧👍👍👍,您的鼓励,我的动力,坚持输出质量好文~~ 欢迎评论留言 我是掘金安东尼,输出暴露输入,技术洞见生活。再会吧~~ 👋👋👋


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK