ES6新特性

一、变量

  • var:重复定义不报错;没有块级作用域;不能限制修改
  • let:变量,不能重复定义,有块级作用域
  • const:常量,不能重复定义,有块级作用域

二、函数/参数

  • 箭头函数——简写:

    • 1.只有一个参数,()可以省
    • 2.只有一个语句,还是return,{}可以省
  • 参数扩展——剩余参数
  • 数组展开

三、模块化

  • 1、sea.js、require.js

    • 规范:CMD 、AMD(区别是什么)
    • seajs作用:按需引用,解决依赖

         // 定义模块
      define(function(require, exports, module) {
      // 1.exports
      // exports.a = 12
      // exports.b = 5
      // 2.require
      let mod2 = require('./mod2.js')
      // 3.module:批量导出
      module.exports = {
      a:12,b:5,c:8,d:7,num:mod2.num,
      show(a,b){
      alert(a+b)
      }
      }
      });
      // 引用模块
      seajs.use(['xxx.js','xxx.js',...],function(mod1,mod2,..){
        
      })
  • 2、nodejs模块化

    • 没有define
    • 有exports、require、module
    • 引用自定义模块
      • 放到node_modules文件夹里面
      • 前面加./ ,例如:./mod1.js
  • 3、ES6模块化

四、数组

  • map(映射):
  • reduce(汇总):
  • filter(过滤):
  • forEach(迭代、遍历):

五、字符串

  • 字符串模板:xxxx${变量}xxx

六、面向对象

  • class
  • super
  • extends

七、promise

  • 作用:解决异步操作
  • 本质:(状态机)等待异步操作结束

    • 当状态改变的时候调用之前挂起的then队列
    • then的时候直接执行对应函数,并且参数给人家
  • 同步——只有操作结束了,才往下执行(一次只能做一个事)

  • 异步——这个操作进行中,其他操作也能开始(一次可以做多个事)

  • 异步的优势:

    • 用户体验好
    • 高效
  • 同步的优势:

    • 简单
  • promise:

 // 创建Promise对象
let p = new Promise(function(resolve,reject){
异步代码...
}); // 使用Promise对象
p.then(()=>{ },()=>{ })

八、generator

  • 本质:无感处理异步操作
  • 普通函数:一直执行到头
  • generator:中间可以暂停
  • yield:
    • 传参
    • 返回值

九、async/await

  • 本质:官方runner

十、json

05-11 07:32