《JavaScript高级程序设计4》笔记
# 1.什么是JavaScript
JavaScript是一门用来与网页交互的脚本语言,包含以下三个组成部分:
- 核心(ECMAScript):ECMA-262定义的语言,编写脚本语言的标准,它定义了语法、类型、语句、关键字、保留字、操作符、全局对象等
- 文档对象模型(DOM):一个应用编程接口(API),用于在HTML中使用扩展的XML。DOM将整个页面抽象为一组分层节点。HTML或XML页面的每个组成部分都是一种节点,包含不同的数据。
- 浏览器对象模型(BOM):用于支持访问和操作浏览器的窗口。
【ES6-ES10变化】 - ES6:新增类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
- ES7:少量语法层面的增强,如Array.prototype.includes和指数操作符。
- ES8:增加异步函数(async/await)、SharedArrayBuffer及Atomics API,以及Object.values()/Object.entries()/Object.getOwnPropertyDescriptors()和字符串填充方法。
- ES9:异步迭代、剩余和扩展属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订。
- ES10:Array.prototype.flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()方法,以及Symbol.prototype.description属性。
# 2.HTML中的JavaScript
本章的重点总结:
1.要包含外部JavaScript文件,必须将src属性设置为要包含文件的URL。文件可以跟网页在同一台服务器上,也可以位于完全不同的域。
2.所有<script>元素会依照它们在网页中出现的次序被解释。在不使用defer和async属性的情况下,包含在<script>元素中的代码必须严格按次序解释。
3.对不推迟执行的脚本,浏览器必须解释完位于<script>元素中的代码,然后才能继续渲染页面的剩余部分。为此,通常应该把<script>元素放到页面末尾,介于主内容之后及</body>标签之前。
4.可以使用defer属性把脚本推迟到文档渲染完毕后再执行。推迟的脚本原则上按照它们被列出的次序执行。
5.可以使用async属性表示脚本不需要等待其他脚本,同时也不阻塞文档渲染,即异步加载。异步脚本不能保证按照它们在页面中出现的次序执行。
6.通过使用<noscript>元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启用脚本,则<noscript>元素中的任何内容都不会被渲染。
1
2
3
4
5
6
2
3
4
5
6
# 3.语言基础
# 3.1 语法
3.1.1 区分大小写
3.1.2 标识符:就是变量、函数、属性或函数参数的名称。
3.1.3 注释: // 单行注释 /* 这是多行注释 */
3.1.4 严格模式:"use strict";
3.1.5 语句
# 3.2 关键字与保留字
break do in typeof
case else instanceof var
catch export new void
class extends return while
const finally super with
continue for switch yield
debugger function this
default if throw
delete import try
始终保留:
enum
严格模式下保留:
implements package public
interface protected static
let private
模块代码中保留:
await
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3.3 变量
3.3.1 var关键字
3.3.2 let声明
- var存在声明提升,let不会
- var是函数作用域,let是块作用域
- 使用let在全局作用域中声明的变量不会成为window对象的属性(var声明的变量则会)
- for循环:var定义的迭代变量会渗透到循环体外部,let不会 3.3.3 const声明 3.3.4 声明风格及最佳实践:不使用var,const优先,let次之
# 3.4 数据类型
- 原始类型:Undefined、Null、Boolean、Number、String、Symbol
- 引用类型:Object 3.4.1 typeof操作符
# 4.变量、作用域与内存
# 5.基本引用类型
# 6.集合引用类型
# 7.迭代器与生成器
# 8.对象、类与面向对象编程
# 9.代理与反射
# 10.函数
# 11.期约与异步函数
# 12.BOM
# 13.客户端检测
# 14.DOM
# 15.DOM扩展
# 16.DOM2和DOM3
# 17.事件
# 18.动画与Canvas图形
# 19.表单脚本
# 20.JavaScript API
# 21.错误处理与调试
# 22.处理XML
# 23.JSON
# 24.网络请求与远程资源
# 25.客户端存储
# 26.模块
# 27.工作者线程
# 28.最佳实践
上次更新: 2021/01/08, 17:01:00