前端ES6相关的面试题
文章目录
- 前端ES6相关的面试题
- 一. var let const
- var
- let
- const
- 二 . 函数的扩展
- reset参数
- 箭头函数
- 三 . 数组的扩展
- 四.Set和map数据结构
- Set
- map
- 五. Promise
- 六. 模块化
一. 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指向对象的实例
- 箭头函数的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 导出的内容



















