一、新增箭头函数

  • 简化了写法, 少打代码,结构清晰
    - 明确了this。传统JS的this是在运行的时候确定的,而不是在定义的时候确定的;而箭头函数的this是在定义时就确定的,不能被改变,也不能被call,apply,bind这些方法修改。

二、块级作用域

  • ES6中的let、const声明的变量有块级作用域,let声明的变化没有提升的概念
    - ES5中是没有块级作用域的,并且var有变量提升的概念
    - let声明的变量在同一个作用域内只有一个
    - 要声明常量使用const

三、解构赋值

  1. ES6中变量的解构赋值,比如:
  2. let [a,b,c] = [0,1,2];
  3. let {foo:abc,bar} = {foo:'hello',bar:'hi'};

四、Symbol

ES6新增了一种Symbol数据类型,表示全局唯一的对象

  1. let a1 = Symbol();
  2. let a2 = Symbol();
  3. console.log(a1 === a2); //false a1和a2永远不相等
  4. let a3 = Symbol.for("a3");
  5. let a4 = Symbol.for("a3");
  6. console.log(a3 === a4); //true

五、模板字符串

  1. var name = "张三";
  2. var age = 12;
  3. var gender="男";
  4. let str = `姓名${name},年龄${age},性别${gender}`;

六、展开运算符

  1. let arr1 = [1,2,3];
  2. let arr2 = [4,5,6];
  3. let arr3 = [...arr1,...arr2];

七、类

ES6引入Class这个概念,让JS拥有其他面向对象语言的语法糖。

  1. {
  2. // 继承传递参数
  3. class Parent{
  4. constructor(name='mukewang'){
  5. this.name=name;
  6. }
  7. }
  8. class Child extends Parent{
  9. constructor(name='child'){
  10. //先初始化父亲的信息,在初始化自己的信息
  11. super(name);
  12. this.type='child';
  13. }
  14. }
  15. console.log('继承传递参数',new Child('hello'));
  16. }

八、Promise

ES6的Promise主要用于解决JS回调地狱问题

  1. var fs = require('fs')
  2. function pReadFile(filePath) {
  3. return new Promise(function (resolve, reject) {
  4. fs.readFile(filePath, 'utf8', function (err, data) {
  5. if (err) {
  6. reject(err)
  7. } else {
  8. resolve(data)
  9. }
  10. })
  11. })
  12. }
  13. pReadFile('./data/a.txt')
  14. .then(function (data) {
  15. console.log(data)
  16. return pReadFile('./data/b.txt')
  17. })
  18. .then(function (data) {
  19. console.log(data)
  20. return pReadFile('./data/c.txt')
  21. })
  22. .then(function (data) {
  23. console.log(data)
  24. })
  25. js中解决异步回调方案:
  26. 1.回调函数:回调地狱的问题
  27. 2.Promise
  28. 3.awaitasync 最优

九、ES6的迭代器

  1. //for ... of 是ES6中新增加的语法,主要用来循环实现了Iterator接口类型的对象
  2. //for ... of 可以遍历Array、Set、Map不能遍历Object
  3. let arr = ['China', 'America', 'Korea']
  4. for (let o of arr) {
  5. console.log(o) //China, America, Korea
  6. }

十、ES6模块化

  1. //1.导出
  2. //导出单个成员
  3. export let name = 'leo';
  4. export let age= 30;
  5. let name= 'leo';
  6. let age= 30;
  7. let kk = "abc"
  8. //导出多个成员
  9. export {name, age};
  10. //导出默认成员
  11. export default kk;
  12. //2.引入
  13. import kk,{name,age} from 'a.js'