1. ES6新增的方法
-
let和const,解构赋值、模板字符串、箭头函数。
-
Symbol、Map、Set三种常用的数据类型。
-
Proxy重新定义了数据劫持的能力
-
Reflect定义了一套标准化的数据操作的方式
-
Promise确实的解决了异步逻辑嵌套及回调地狱问题。定义了异步逻辑的三种状态pending、rejected、fullfilled, 搭配then、catch、all、race等方法以及async await语法糖,大量简化了异步操作。
-
Generator函数,可以将异步逻辑划片执行。
-
Generator 函数是 ES6 提供的一种异步编程解决方案
-
Generator 函数是一个状态机,封装了多个内部状态。
-
执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。
-
-
新增了class类的概念
-
ES6 Modules
2. var, let, const的区别
const 定义的常量, 无法更改。
if(true){ let name ="kerwin" } const obj = {name:"kerwin"} obj.name="xiaoming" // obj = {name:"xioamng"} // obj= 'dwadwa'
3. 箭头函数
箭头函数是ES6推出的,所以在低版本浏览器是有兼容问题的,语法简介明了,逻辑更清晰。
箭头函数没有自己的this,this指向外部的this,并且this会在创建的时候就绑定好.
const fn1 = function() {
console.log(this)
}
fn1() // window
const obj = {
name: 'tom',
fn2 () {
fn1() // window
console.log(this) // obj
}
}
obj.fn2()
4. 解构
5 ... 展开合并
[...arr1,...arr2] {...obj1,...obj2}
6. promise
7 .class (语法糖 => 构造函数,babel-loader)
class Person{
constructor(name,age) {
this.name = name;
this.age =age;
}
say=()=>{
}
}
class Test extends person{
constructor(name,age,location) {
super(name,age);
this.location = location;
}
}
8 .模块化
import obj from "./a" ;
export default aaa;
import {test} from "./b" ;
export {test} ;
export var test =function(){}
AMD - 前端 异步加载 - 提前下载, 提前加载 require.js CMD - 异步加载 - 提前下载 , 按需加载 -- 玉伯 -sea.js CommonJs -同步加载(webpack) require("./b") =>module.exports =>exports ES6 - 模块化 //ES6 和 commonJS区别? //ES6可以导入某几个接口 import {a} from './module.js' + webpack- tree shaking 摇树优化 //commonJS 导入整个文件
9. 异步遍历器生成函数(大厂面试)
function timer(t) {
return new Promise(resolve => {
setTimeout(() => {
resolve(t)
}, t)
})
}
async function* fn() {
yield timer(1000)//任务1
yield timer(2000)//任务2
yield timer(3000)//任务3
}
// 使用一下 for await ...of
async function fn1() {
for await(const val of fn()) {
console.log("start",Date.now())
console.log(val);
console.log("end",Date.now())
}
}
fn1();