1、let、const、var的区别
var声明变量存在变量提升,let和const不存在变量提升
let、const都是块级局部变量 ,存在暂时性死区
const 的特性和 let 完全一样,不同的只是const声明时候必须赋值,赋值基本类型时,只能进行一次赋值,即声明后不能再修改,赋值引用类型时,内存地址不能修改
同一作用域下let和const不能声明同名变量,而var可以
2、箭头函数和普通函数的区别
2.1、箭头函数的this是定义时决定的,普通函数是看调用方法。
2.2、箭头函数不能成为构造函数
2.3、箭头函数不能使用async/await
2.4、箭头函数不能使用Generator函数,不能使用yeild关键字
2.5、箭头函数不能使用call、apply、bind来修改this指向
2.6、箭头函数不绑定arguments
2.7、箭头函数不具有prototype原型对象,不具有super
3、promise的实现原理和封装
promise一共有三种状态,分别是pedding初始状态 、resolved成功的状态、 rejected失败的状态。传入两个参数,一个是resolve,执行then的方法,一个是reject,执行catch的方法或者then的第二个参数的回调。promise一旦状态改变就不可在修改。promise的链式调用实际上是返回的一个新的promise,而非return this。
// 简版promise function Promise(executor){ //executor执行器 let self = this; self.status = 'pending'; //等待态 self.value = undefined; // 表示当前成功的值 self.reason = undefined; // 表示是失败的值 function resolve(value){ // 成功的方法 if(self.status === 'pending'){ self.status = 'resolved'; self.value = value; } } function reject(reason){ //失败的方法 if