0. 前言
小编学习前端已经一年多了,越往前走便越能察觉到基础的重要。于是,小编回来补课了。在整个前端开发的生态中,JavaScript 语言可以说是很多高阶应用的基石,无论是使用前端框架进行客户端的开发,还是使用node进行服务端的开发,都离不开 JavaScript 语言。因此,小编通过《JavaScript高级程序设计》和《JavaScript权威指南》这两本在业界被称为圣经的语法书来进行 JavaScript的基础只是进行查漏补缺。
作为本系列的第一篇文章,小编就带着大家跟随这两本书的脚步来回顾下 JavaScript 的周边知识,包括JavaScript历史回顾、在html中的JavaScript,以及JavaScript版本相关等等零碎小知识。虽然,这些东西和JavaScript语法及应用关系不大,但是作为常识还是要了解一下的。
1. 历史回顾
- 1995 年,网景公司一名叫Brendan Eich 的工程师,开始为即将发布的Netspace Nevigator 2 开发一个叫 Mocha(后来改名叫LiveScript)的脚本语言
- 为了赶上发布时间,网景与 Sun 公司合作,共同完成 LiveScirpt 的开发。在发布之前,网景为了搭上媒体当时热烈炒作 Java 的顺风车,将 LiveScript 改名为 JavaScript。
- 由于 JavaScript 1.0 版本很成功,网景又在 Netscape Navigator 3 中发布了 1.1 版本。不久后,微软发布 IE3,其中包含自己名为JScript的JavaScript实现。
- 1996年8月,微软重磅进入Web浏览器领域,代表着JavaScript作为一门语言向前迈了一大步。此时,有两个版本的JavaScript:Netscape Navigator中的JavaScript,以及IE中的JScript。
- 1997年,JavaScript1.1作为提案被提交给欧洲计算机制造协商会(Ecma)。第39技术委员会(TC39)承担了“标准化一门通用、跨平台、厂商中立的脚本语言的语法和语义”的任务。TC39委员会由来自网景、Sun、微软、Borland、Nombas和其他对着门脚本语言有兴趣的公司的工程师组成。他们花了数月时间打造出ECMA-262,也就是ECMAScript这个脚本语言标准。
- 1998年,国际标准化组织(ISO)和国际电工委员会(IEC)也将 ECMAScript 采纳为标准。自此以后,各家浏览器均以 ECMAScript 作为自己的JavaScript实现的依据。
2. ECMAScript 版本
- ECMA-262 第1版本质上跟网景的JavaScript1.1相同
- ECMA-262 第2版只是做了一些编校工作,为了更新之后严格符合ISO/ICE-16262的要求
- ECMA-262 第3版第一次真正对这个标准进行更新,更新了字符串处理、错误定义和数值输出。此外还增加了对正则表达式、新的控制语句、try/catch 异常处理的支持,以及为了更好地让标准国际化所做的少量修改。
- ECMA-262 第4版是对这门语言的一次彻底修订。第 4 版包括强类型变量、新语句和数据结构、真正的类和经典的继承,以及操作数据的新手段。
- ECMA-262 第5版,于2009年12月3日正式发布。这一版也就是我们常说的ES5。
- ECMA-262 第6版,俗称 ES6、 ES2015 或 ES Harmony(和谐版),于 2015 年 6 月发布。最经典的ES6. ES5 和 ES6 都是很经典的JavaScript版本。在ES6之后基本上就是一年一个新的版本了。习惯上,我们把之后的版本统称为ES6.
- ECMA-262 第7版,也称为 ES7 或 ES2016,于 2016 年 6 月发布。
- ECMA-262 第8版,也称为 ES8、 ES2017,完成于 2017 年 6 月。这一版主要增加了异步函数(
async/await)、SharedArrayBuffer及Atomics API,以及Object.values()/Object.entries()/Object.getOwnPropertyDescriptors()和字符串填充方法,另外明确支持对象字面量最后的逗号。 - ECMA-262 第9版,也称为 ES9、 ES2018,发布于 2018 年 6 月。
- ECMA-262 第10版,也称为 ES10、 ES2019,发布于 2019 年 6 月。
3. HTML中的JavaScript
将 JavaScript 插入 HTML 的主要方法是使用 <script> 元素。它由8个属性:
- async:可选。表示应该立即开始下载脚本,但不能阻止其他页面动作。
- charset:可选。使用src属性指定代码字符集。这个属性很少使用,因为大多数浏览器不在乎它的值。
- crossorgin:可选。配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。
- defer:可选。表示脚本可以延迟到文档完全被解析和显示之后执行。只对外部脚本文件有效。
- integrity:可选。允许比对接收到的资源和制定的加密签名已验证子资源的完整性
- language:废弃。
- src:可选,表示包含要执行的代码的外部文件
- type:可选。代替language,表示代码块中脚本语言的内容类型。按照惯例,这个值始终都是
"text/javascript"
关于<script>标签,要注意:
- 使用 scr 属性的
<script>元素不应该再在<script>和</script>标签中再包含其他JavaScript代码。如果两者都提供的话,则浏览器只会下载并在必行脚本文件,而忽略行内代码 - 跟
<img>元素很像,<script>元素中的scr属性可以是完整的URL,而且这个URL指向的资源可以跟包含它的HTML页面不在同一个域中 - defer属性表示立即加载,延迟执行;async属性表示不必等脚本下载和执行完之后再加载页面,同样也不必等到该异步脚本下载和执行之后再加载其他脚本
4. 其他
- 完成的JavaScript包含:ECMAScript、文档对象模型(DOM)、浏览器对象模型(BOM)
- 文档对象模型( DOM, Document Object Model)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。 DOM 将整个页面抽象为一组分层节点。 HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。
- 浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM 真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。 HTML5 改变了这个局面,这个版本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM有关的问题都迎刃而解了。
5. 系列文章内容预览
在文章的最后,我们来看一下这个系列文章的内容是如何安排的。这一些列文章包含ECMAScript的内容、BOM、DOM的相关内容,还包括JavaScript网络编程的内容。
关于ECMAScript的内容,如下:
- 语法:语法是基础,是我们日常编程会天天用到的。但是两本书都写的及其枯燥,在小编的文章中,会有一个详略,重点关注那些我们日常变成不会注意到的内容,而那些天天会用到的内容就简写甚至不写。
- 数组和类数组:数组和类数组,是进行数据存储的工具。因此,在介绍完简单的语法之后,我们接着来聊数组和类数组相关内容。
- 函数
- 对象和类
- 代理与反射
- 异步与Promise
后面四个部分的内容就是JS中的重点和难点所在,因此,小编会采用较大的篇幅来介绍这四个部分。至于其他的内容,小编还需要继续充电...