书籍地址:http://es6.ruanyifeng.com/javascript
1.let和const命令java
新增let命令,用来声明变量,用法和var相似。var声明在一个函数声明做用域里有效,let声明在一个区块做用域里有效。 var声明有“变量提高”的现象,let声明不能在变量声明以前使用会报语法错误。es6
let语法实际为javascript新增了区块做用域的概念。现有的区块做用域是经过自执行的匿名函数来模拟的。正则表达式
const也是用来声明变量,但声明的是常量,一旦声明,学量的值将不能改变。数组
2.数组和对象的解构赋值函数
用途不少,具体见文档编码
3.字符串的扩展url
codePointAt 做用和charCodeAt相似,对于Unicode编码大于0xFFFF的字符(即须要4个字节存储的字符)能够正确的解析。spa
正则表达式新添加u修饰符,用来正确处理编码大于0xFFFF的字符。.net
正则表达式新添加y修饰符,与g修饰符相似,只不过匹配必须从第一个字符开始,做用和^和g同时使用。
字符串实例新增contains(),starWith(),endWith(),repeat()。
模板字符串中能够嵌入变量,拼接字符串比较好用
4.数值的扩展
提供了二进制和八进制数值的写法,分别以0b和0o开发
parseInt和parseFloat由全局方法移值到Number对象上。
Math提供了许多数学方法
5.数组的扩展
提供简洁写法,容许直接经过现有数组生成新数组,这被称为数组推导
提供三个新的方法——entries(),keys()和values()——用于遍历数组。
Array.observe(),Array.unobserve() 这两个方法用于监听(取消监听)数组的变化,指定回调函数。
6.对象的扩展
Object.assign方法用来将源对象(source)的全部可枚举属性,复制到目标对象(target)。它至少须要两个对象做为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误。
容许定义对象时,用表达式做为对象的属性名。在写法上,要把表达式放在方括号内。
原生提供Proxy构造函数,用来生成proxy实例对象。所谓Proxy,能够理解成在目标对象以前,架设一层“拦截”,外界对该对象的访问,都必须先经过这层拦截,能够被过滤和改写。
Object.observe(),Object.unobserve().Object.observe方法用来监听对象的变化。一旦监听对象发生变化,就会触发回调函数。Object.unobserve方法用来取消监听。
7.函数的扩展
容许使用“箭头”(=>)定义函数。
引入rest参数(...变量名),用于获取函数的多余参数,这样就不须要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
扩展运算符(spread)是三个点(...)。将一个数组转为用逗号分隔的参数序列。该运算符主要用于函数调用。
8.Promise对象
原生提供了Promise对象。
9.class和Moudle
引入了类的概念,使用关键字class能够定义一个类;class之间经过extends实现继承
实现了模块功能,模块功能有两个关键字:export和import。export用于用户自定义模块,规定对外接口;import用于输入其余模块提供的功能,同时创造命名空间(namespace),防止函数名冲突。