2022-04-24 JavaScript基础学习 - 1

前情提要

此类文集是根据《JavaScript高级程序设计(第四版)》为参考进行JavaScript的基础补足。
昨天和朋友聊了聊,发现自身的JavaScript基础很薄弱,对于很多JavaScript的方法只是知道怎么用而不知道其中原理,比如最简单数组中的push等。

第一章 什么是 JavaScript

前言

《JavaScript高级程序设计》适用于:

  1. 有经验的开发者,熟悉面向对象,比如java后端想学习前端
  2. web应用程序开发者,希望增强自身网站或web应用程序的易用性
  3. 初级JavaScript开发者,希望能更好地理解这门语言

而我则属于第三者

起源

1995年,JavaScript问世,一开始它的期望是用作客户端验证,如表单必填项的确认,在那个年代,这样的新功能是新奇而又让人期待的。
而后,JavaScript成为了主流,它的功能也不只局限于表单验证,而多了很多如闭包,class等新功能
1995年,网景公司在 Netscape Navigator 2 发布了JavaScript(原叫做LiveScript),初发布很成功,也让网景公司占据了市场上的主导地位,后来微软也决心向 IE 投入更多资源,但为了避免于网景公司发生许可纠纷,微软将自己的JavaScript叫做JScript,这时候,市面上有了两种JavaScript,一个是网景公司的,一个是微软的。
所以最后,JavaScript也走向标准化的征程——
1997年,JavaScript 1.1 版本作为提案提交给欧洲计算机制造商协会(ECMA),由第39技术委员会承担这项任务,最后打造出的ECMAScript,直到1998年以后,各家浏览器都将ECMAScript作为自身JavaScript实现的依据。

JavaScript 的实现

完整的JavaScript包括ECMAScriptDOMBOM
ECMAScript则定义的是:

  1. 语法
  2. 类型
  3. 语句
  4. 关键字
  5. 保留字
  6. 操作符
  7. 全局对象
es版本

ES5,于2009年12月3日正式 发布。第5版致力于厘清第3版存在的歧义,也增加了新功能。新功能包括原生的解析和序列化JSON数据的JSON对象、方便继承和高 级属性定义的方法,以及新的增强ECMAScript引擎解释和执行代 码能力的严格模式。第5版在2011年6月发布了一个维护性修订版, 这个修订版只更正了规范中的错误,并未增加任何新的语言或库特性。

现在最常说的 ES6 于2015年6月发布。这一版包含了大概这个规范有史以来最重要的 一批增强特性。ES6正式支持了类、模块、迭代器、生成器、箭头 函数、期约、反射、代理和众多新的数据类型。

ES7,于2016年6月发布。这次 修订只包含少量语法层面的增强,如Array.prototype.includes 和 指数操作符。

ES8,完成于2017年6月。这一 版主要增加了异步函数(async/await)、SharedArrayBuffer 及 Atomics API,以及 Object.values()/Object.entries()/Object.getOwnPropertyDescriptors() 和字符串填充方法,另外明确支持对象字面量最后的逗号。

ES9,发布于2018年6月。这次修订包括异步迭代、剩余和扩展属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订。

ES10,发布于2019年6月。这 次修订增加了 Array.prototype.flat()/flatMap()、String.prototype.trimStart() 方法,以及 Symbol.prototype.description 属性,明确定义了 Function.prototype.toString() 的返回值并固定了 Array.prototype.sort() 的顺序。另外,这次修订解决了与 JSON 字符串兼容的问题,并定义了 catch 子句的可选绑定。

DOM

dom,文档对象模型(document object module)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。
DOM 通过创建表示文档的数,让开发者可以随心所欲地控制网页中的内容和结构,使用 DOM API,可以轻松地删除、添加、替换、修改节点。

为什么 DOM 是必需的?
使用 DOM 可以在不刷新网页的情况下修改网页的内容(由于一开始网景公司和微软使用了不同的设计思路开发 DHTML,导致可能会变成面向浏览器变成,因此 W3C 制定了 DOM 标准)

BOM

IE3 和 Netscape Navigator 3 提供的浏览器对象模型(Browser object module),而在 HTMl5 中,对于 BOM 有了比较统一的规定。

第二章 HTML 中的 JavaScript

script 元素

最早 script 元素是由网景公司创造出来的,是为了在 HTML 中插入 JavaScript。后来此标签正式归入 HTML 规范,并且此元素具有以下 8 大属性:

  1. async(可选):表示应该立即下载脚本,但不能阻止其他页面动作(此概念就是异步),只对外部脚本文件有效。
    属性值: async
  2. charset(可选):规定在外部脚本文件中使用的字符编码。
    属性值:character_encoding(字符编码,如 UTF-8)
  3. crossorigin(可选):配置相关请求的 CORS(跨域资源共享)设置。默认不使用 CORS。
    属性值:anonymous(配置文件请求不 必设置凭据标志)
    属性值:use-credentials(设置凭据标志, 意味着出站请求会包含凭据)
  4. defer(可选):表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
    属性值:defer
  5. integrity(可选):允许比对接收到的资源和指定的加密签名以验 证子资源完整性(SRI,Subresource Integrity)。如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行。
  6. language(废弃):最初用于表示代码块中的脚本语言,现在使用type
  7. src:(可选):表示包含要执行的代码的外部文件。
  8. type:(可选):代替language,表示代码块中脚本语言的内容类型 (也称MIME类型)。按照惯例,这个值始终都是"text/javascript"
    属性值:module(则代码会被当成ES6模块,而且只有这时候代码中才能出现importexport
注意事项

使用 script 元素的注意事项,在该元素中,不能直接使用字符串,这样 html 会将其识别为,不要在其中写 JavaScript 代码,浏览器不会解析元素内部的 JavaScript 代码,并且

你可能感兴趣的:(2022-04-24 JavaScript基础学习 - 1)