一、新增箭头函数
- 简化了写法, 少打代码,结构清晰
- 明确了this。传统JS的this是在运行的时候确定的,而不是在定义的时候确定的;而箭头函数的this是在定义时就确定的,不能被改变,也不能被call,apply,bind这些方法修改。
二、块级作用域
- ES6中的let、const声明的变量有块级作用域,let声明的变化没有提升的概念
- ES5中是没有块级作用域的,并且var有变量提升的概念
- let声明的变量在同一个作用域内只有一个
- 要声明常量使用const
三、解构赋值
ES6中变量的解构赋值,比如:let [a,b,c] = [0,1,2];let {foo:abc,bar} = {foo:'hello',bar:'hi'};
四、Symbol
ES6新增了一种Symbol数据类型,表示全局唯一的对象
let a1 = Symbol();let a2 = Symbol();console.log(a1 === a2); //false a1和a2永远不相等let a3 = Symbol.for("a3");let a4 = Symbol.for("a3");console.log(a3 === a4); //true
五、模板字符串
var name = "张三";var age = 12;var gender="男";let str = `姓名${name},年龄${age},性别${gender}`;
六、展开运算符
let arr1 = [1,2,3];let arr2 = [4,5,6];let arr3 = [...arr1,...arr2];
七、类
ES6引入Class这个概念,让JS拥有其他面向对象语言的语法糖。
{// 继承传递参数class Parent{constructor(name='mukewang'){this.name=name;}}class Child extends Parent{constructor(name='child'){//先初始化父亲的信息,在初始化自己的信息super(name);this.type='child';}}console.log('继承传递参数',new Child('hello'));}
八、Promise
ES6的Promise主要用于解决JS回调地狱问题
var fs = require('fs')function pReadFile(filePath) {return new Promise(function (resolve, reject) {fs.readFile(filePath, 'utf8', function (err, data) {if (err) {reject(err)} else {resolve(data)}})})}pReadFile('./data/a.txt').then(function (data) {console.log(data)return pReadFile('./data/b.txt')}).then(function (data) {console.log(data)return pReadFile('./data/c.txt')}).then(function (data) {console.log(data)})js中解决异步回调方案:1.回调函数:回调地狱的问题2.Promise3.await和async 最优
九、ES6的迭代器
//for ... of 是ES6中新增加的语法,主要用来循环实现了Iterator接口类型的对象//for ... of 可以遍历Array、Set、Map不能遍历Objectlet arr = ['China', 'America', 'Korea']for (let o of arr) {console.log(o) //China, America, Korea}
十、ES6模块化
//1.导出//导出单个成员export let name = 'leo';export let age= 30;let name= 'leo';let age= 30;let kk = "abc"//导出多个成员export {name, age};//导出默认成员export default kk;//2.引入import kk,{name,age} from 'a.js'
