几道ES6面试题

举报
小妖现世 发表于 2021/08/27 00:54:37 2021/08/27
【摘要】 var、let、const区别var声明变量可以重复声明,而let不可以var是不受限于块级作用域,而let受限var存在变量提升,let和const不存在变量提升const声明的变量不可变const声明之后必须赋值,否则会报错PromisePromise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。它有三种状态pending初始状态fulfille...

var、let、const区别

  • var声明变量可以重复声明,而let不可以
  • var是不受限于块级作用域,而let受限
  • var存在变量提升,letconst不存在变量提升
  • const声明的变量不可变
  • const声明之后必须赋值,否则会报错

Promise

Promise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。

它有三种状态

  • pending初始状态
  • fulfilled操作成功
  • rejected操作失败。

Promise状态改变只有两种可能

  • pending------>fulfilled
  • pending------>rejected

Promise构造函数接收一个参数和一个带有resolvereject参数的回调函数。

  • 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。