ECMAScript 6简介
1 ECMAScript 和 JavaScript 的关系 2 ES6 与 ECMAScript 2015 的关系 3 语法提案的批准流程 4 ECMAScript 的历史 5 部署进度 6 Babel 转码器 7 Traceur 转码器
1、ECMAScript 和 JavaScript 的关系 :前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。日常场合,这两个词是可以互换的。
2、 ES6 与 ECMAScript 2015 的关系:ES6 既是一个历史名词,也是一个泛指,含义是5.1版以后的 JavaScript 的下一代标准,涵盖了ES2015、ES2016、ES2017等等,而ES2015 则是正式名称,特指该年发布的正式版本的语言标准。本书中提到 ES6 的地方,一般是指 ES2015 标准,但有时也是泛指“下一代 JavaScript 语言”。
let 和 const 命令
1 let 命令 2 块级作用域 3 const 命令 4 顶层对象的属性 5 global 对象
4 顶层对象的属性:顶层对象,在浏览器环境指的是window
对象,在 Node 指的是global
对象。ES5 之中,顶层对象的属性与全局变量是等价的。
ES6 一方面规定,为了保持兼容性,var
命令和function
命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let
命令、const
命令、class
命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
var a = 1; // 如果在 Node 的 REPL 环境,可以写成 global.a // 或者采用通用方法,写成 this.a window.a // 1 let b = 1; window.b // undefined
上面代码中,全局变量a
由var
命令声明,所以它是顶层对象的属性;全局变量b
由let
命令声明,所以它不是顶层对象的属性,返回undefined
。
变量的解构赋值
1 数组的解构赋值 2 对象的解构赋值 3 字符串的解构赋值 4 数值和布尔值的解构赋值 5 函数参数的解构赋值 6 圆括号问题 7 用途
6 圆括号问题:可以使用圆括号的情况:赋值语句的非模式部分,可以使用圆括号。
7 用途:
(1)交换变量的值 (2)从函数返回多个值 (3)函数参数的定义 (4)提取JSON数据 (5)函数参数的默认值 (6)遍历Map结构 (7)输入模块的指定方法
字符串的扩展
1 字符的 Unicode 表示法 2 codePointAt() 3 String.fromCodePoint() 4 字符串的遍历器接口 5 at() 6 normalize() 7 includes(), startsWith(), endsWith() 8 repeat() 9 padStart(),padEnd() 10 模板字符串 11 实例:模板编译 12 标签模板 13 String.raw() 14 模板字符串的限制
1