前端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 导出的内容