几道ES6面试题
【摘要】 var、let、const区别var声明变量可以重复声明,而let不可以var是不受限于块级作用域,而let受限var存在变量提升,let和const不存在变量提升const声明的变量不可变const声明之后必须赋值,否则会报错PromisePromise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。它有三种状态pending初始状态fulfille...
var、let、const区别
var
声明变量可以重复声明,而let
不可以var
是不受限于块级作用域,而let
受限var
存在变量提升,let
和const
不存在变量提升cons
t声明的变量不可变const
声明之后必须赋值,否则会报错
Promise
Promise
是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
它有三种状态
pending
初始状态fulfilled
操作成功rejected
操作失败。
Promise
状态改变只有两种可能
- 从
pending
------>fulfilled
- 从
pending
------>rejected
Promise
构造函数接收一个参数和一个带有resolve
和reject
参数的回调函数。
resolve
的作用是将Promise
状态从pending
变为fulfilled
,在异步操作成功时调用,并将异步结果返回,作为参数传递出去reject
的作用是将Promise
状态从pending
变为rejected
,在异步操作失败后,将异步操作错误的结果,作为参数传递出去
Promise
实例方法
promise.then()
对应resolve
成功的处理promise.catch()
对应reject
失败的处理promise.call()
将多个Promise
实例,包装成一个新的Promise
实例,返回的实例就是普通的Promise
。有一个失败,代表该Primise
失败。当所有的子Promise
完成,返回值时全部值的数组promise.race()
类似promise.all()
,区别在于有任意一个完成就算完成(例如:将异步和定时器放在一起,设置请求超时)
箭头函数和普通函数的区别
- 箭头函数时匿名函数,不能作为构造函数,不能使用
new
- 箭头函数不绑定
arguments
- 箭头函数没有自己的
this
,将所在的上下文的this
作为自己的this
值 - 没有
prototype
call()
、applay()
、bind()
方法不能改变箭头函数中的this
指向
forEach和map的区别
- forEach返回值是undefined,不可以链式调用
- map()返回一个新的数组,不改变原数组。forEach改变原数组。
Set、Map的区别
Set
- 创建:
new Set([1, 1, 2, 3, 3, 4, 2])
add(value)
:添加某个值,返回Set结构本身。delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。has(value)
:返回一个布尔值,表示该值是否为Set的成员。clear()
:清除所有成员,没有返回值。
Map
set(key, val):
向Map
中添加新元素get(key):
通过键值查找特定的数值并返回has(key):
判断Map
对象中是否有Key
所对应的值,有返回true
,否则返回false
delete(key):
通过键值从Map
中移除对应的数据clear():
将这个Map
中的所有元素删除
区别
- Map是一种键值对的集合,和对象不同的是,键可以是任意值
- Map可以遍历,可以和各种数据格式转换
- Set是类似数组的一种的数据结构,但在Set中没有重复的值
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)