经典面试题之ES6篇

本文详细探讨了ES6中的核心概念,包括let、const与var的区别,箭头函数与普通函数的不同,Promise的实现原理,以及各种遍历方法的特性。此外,还介绍了Set和Map的数据结构,Symbol的用途,以及新增的数组和字符串方法。最后,文章讲解了Object对象的扩展和async/await的异步处理方式。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵爱吃烤串

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值