前端ES6相关的面试题

这篇博客详细梳理了前端面试中常见的ES6相关问题,包括var、let、const的区别,函数扩展如reset参数和箭头函数的特性,数组的forEach、map等方法,Set和Map数据结构的应用,Promise的原理及状态管理,以及ES6的模块化导入导出机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端ES6相关的面试题


一. var let const

var

var存在声明提升 ==>先上车,后买票
var声明的变量会挂载到window下面

console.log(num)//undefined
var num=10

let

  • let是ES6新增声明变量,具有块级作用域
  • let不存在变量提升,必须先声明,后使用
  • let存在展示性死区,比如先试用后声明
  • let在相同作用域下,不能声明相同的变量
	console.log(num)
    let num = 1

在这里插入图片描述

const

  • const是ES6新增声明变量,具有块级作用域
  • const声明的变量必须初始化(必须赋值)
  • const声明的常量不可以修改,这里说的是变量指向的内存地址所保存的数据不可以改变

二 . 函数的扩展

reset参数

ES6引入了reset参数取代arguments对象,reset接受的是一个数组
直接在函数的形参写(…values)

箭头函数

ES6 允许使用“箭头”(=>)定义函数。

箭头函数和function函数的区别 :

  • 箭头函数的this指向不同:
    • 箭头函数的this指向它的父级
    • 在普通函数中 : this指向调用它的对象,
    • 如果是构造函数 : this指向对象的实例
  • 箭头函数都是匿名函数,而普通函数可以是具名也可以是匿名
  • 箭头函数不能用做构造函数实例化对象,而普通函数可以
  • 箭头函数没有arguments

三 . 数组的扩展

  • forEach : 单纯的对数组进行遍历
  • map : 通过映射关系返回一个新的数组
  • filter : 根据条件过滤出对应的数组
  • find : 返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
  • every : 只有数组中所有都满足条件才会返回true,否则返回false
  • some : 只要数组中`有一项满足条件就返回true,相反则返回false
  • reduce : 累计器 对数组每个元素执行一次回调函数,每一次运行回调函数之前计算的结果作为参数传入,最终将其返回

四.Set和map数据结构

Set

Set类似于数组,但是成员的值都是唯一的,没有重复的值
Set本身是一个构造函数

  • size :获取Set实例的元素个数
  • add : 添加元素
  • has : 查询Set实例是否存在某个元素(返回布尔值)
  • delete : 删除Set实例中某个元素
  • clear : 清空Set实例

Set主要的应用场景是对数组进行去重

map

map本质上是键值对的集合,它的键不限于字符串,

  • Map 保存键值对,并且能够记住键的原始插入顺序
  • Map 对键名是否相同的判断基本遵循严格相等===的判断
  • Map适用于即 key => value 的结构,需要字符串以外的键或者值

五. Promise

Promise是ES6新增的构造函数,比传统的解决方案更合理和强大

Promise简单来说就是一个容器,里面保存这未来才会结束的事件(通常是一个异步操作)

  • Promise有三种状态 : pending(进行中),fulfilled(已成功),rejected(已失败)
  • Promise对象的状态改变只有两种情况: 进行中变失败,进行中变成功,只要这两种情况发生,状态就不会改变了,这是称为resolved(已定型)

Promise.prototype上的方法:

  • then() : 实例状态改变的回调函数,有两个参数:第一个是成功回调函数,第二个是失败回调函数。他会返回一个全新的promise,因此可以继续then链式调用
  • catch() : 失败回调函数,状态变为rejected执行。相当于promise. prototytype.then(null/undifined,rejection),如果promise内发生了错误,但却没有定义catch(),这时运行到这一行代码会报错,但是不会影响到promise后面代码的执行
  • finally() : Promise实例无论什么状态都会执行的函数
  • all():将多个promise实例包装成一个新的promise实例

六. 模块化

ES6支持模块化的导入和导出

  • 按需导入 : import {} from “”
  • 按需导出 : export 导出的内容
  • 默认导入 : import 名字 from “”
  • 默认导出 : export default 导出的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

史蒂文·月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值