ES6+ 面试常问题

一、let const var 的区别

1. var:
  1. 没有块级作用域的概念,有函数作用域和全局作用域的概念
  2. 全局作用域性下创建变量会被挂在到 windows 上
  3. 存在变量提升
  4. 同一作用域下,可以重复赋值
  5. 创建未初始化,值为 undefined
2. let:
  1. 块级作用域
  2. 同一作用域性爱同一变量不允许重复声明
  3. 不存在变量提升
  4. 块级作用域下。在声明之前访问会有一个暂时性死区的专属报错
3. const:
  1. const 创建常量
  2. 创建的常量是指向的内存地址是不变的
  3. 若创建的是基本数据类型,则内存地址指向的就是数据,不可变
  4. 若创建的是引用类型数据,则内存地址中存放的是一个指针,指向一个对象
  5. 这里的指针在前端中被称为 ”引用“
  6. 这个对象属性是可以改变的

二、Promise 及其常用 API

1. Promise
1.1 then
  1. 一个有 then 方法的对象。有三种状态:
  2. 被 resolve 或者 resolve 之前处于 pending 状态。
  3. pending 可以用过 resolve 转换为 fulfilled 状态
  4. pending 也可以由 reject 转换为 rejected 状态
1.2 catch 方法
  • 捕获错误
1.3 finally 方法
  • then 方法或 catch 方法执行后执行
1.4 then 方法的链式调用
  1. 第一个 then 方法中回调函数的返回值,就是第二个 then 方法中形参的值

  2. 第二个 then 方法中 return 的返回值,会被后续的 then 方法使用

2. Promise.all
  • 可以同时请求多个接口,并且接口全部请求完毕后返回
2.1 Promise.allSettled
  1. 等待所有传入的 Promise 对象都完成,然后返回一个包含所有 Promise 对象状态的数组
  2. 在数组中使用 map,添加 catch,请求时,哪个报错就会返回 catch 中的值。
  3. 用来处理多个 Promise 对象,并根据它们的状态进行不同的处理
2.2 Promise.allSettled 方法与 Promise.all 方法的区别
  • Promise.allSettled 方法会返回一个包含所有 Promise 对象状态的数组
  • Promise.all 方法只会返回一个包含所有 Promise 对象结果的数组。
2.3 Promise.race
  • 该方法会等待所有传入的 Promise 对象中的第一个完成,然后返回该 Promise 对象的结果。
  • 如果所有 Promise 对象都被拒绝,则 Promise.race 方法会返回第一个被拒绝的 Promise 对象的错误。

三、Set 和 Map 对比

1. Set
  • 创建使用 new 来实例化,如 new Set()
1.1 set 方法
  • has,判断 set 中是否存在某条数据并返回 true/false
  • add,添加一条数据,到集合的末尾
  • clear,清空整个集合
  • forEach,循环遍历每一项,set 没有索引,所以第二个参数代表数据
  • size,集合数量
  • delete,删除某一项
  • keys & values,都是返回一个迭代的类数组对象,这两个值是一样的

在这里插入图片描述

2. Map
  • 存储键值对的集合,且键不可重复
2.1 Map 的方法
  • keys,返回键的类数组对象
  • values,返回值的类数组对象
  • keys 与 values:set,map 使用 set 方法来添加或者修改数据
    其他方法与 set 类似

在这里插入图片描述

四、localStorage、sessionStorage、cookie 的异同

1. cookie
  • 大小:4k
  • 通信:会参与到与服务端请求的通信中
  • 时效性:根据服务端设置的时间过期
  • tab 共享:同源窗口共享
2. localStorage
  • 大小:5m
  • 通信:单纯前端存储,不参与服务端通信
  • 时效性:持久化保存数据(关闭浏览器或者手动清除)
  • tab 共享:同源窗口支持共享
3. sessionStorage
  • 大小:5m
  • 通信:不支持
  • 时效性:页签级会话标签
  • tab 共享:不支持跨 tab 共享
4. sessionStorage 与 localStorage
  • 共同点:都保存在浏览器端,遵循 同源策略 。
  • 不同点:作用域不同

五、扩展运算符 …

1. 等号左边:
  • let [a, ...b] = [1, 3, 5]
    将剩余数据打包到一个新的数组中
2. 等号右边
  • 可以做解构
3. 形参
  • 将传递的参数打包到一个数组中

六、Symbol 数据结构

  • 原始数据类型 Symbol,表示独一无二的值

  • 用来定义对象的私有变量

  • 定义的私有对象是不可变的,并且不能被序列化
    const myPrivateVariable = Symbol('myPrivateVariable');

  • 也可以创建键名(作为唯一键名使用)

const myObject = {[Symbol('myKey')]: 'myValue',
};

总结:它可以用于创建私有变量、不可变对象和键名。

七、async/await

  • 用同步的方式,执行异步操作
  • await 只能在 async 中使用(ES2021 中已经支持顶层 await)
  • await 的返回值是一个 Promise 对象
  • 注意多个 await 执行时,一个 await 报错,后续的 await 都不会执行
  • 可以使用 try catch 包裹报错的 await
  • 更加优雅的处理了 Promise.then 的链式调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307180.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MidJourney笔记(9)-daily_theme-docs-describe

/daily_theme 切换 #daily-theme 频道更新的通知。 但我发现在对话框那里,是没有这个命令的: 但官网是有介绍,不知道是不是版本问题还是这个命令已经无效。 但后来,我发现这个命令是要在Midjourney服务对话框那里才有,在我们后面添加的Mid

【C语言深度剖析——第一节(关键字1)】《C语言深度解剖》+蛋哥分析+个人理解

你未曾见过火光,难怪甘愿漂泊寒夜 本文由睡觉待开机原创,未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 首先简单介绍一下《C语言深度解剖》: 全书特点&am…

在VMware上安装Ubuntu:详细教程

关于VMware和Ubuntu VMware VMware 是一家全球领先的虚拟化和云基础架构解决方案提供商。它提供了多个产品和技术,用于管理和优化计算机资源的使用,实现虚拟化、云计算和数据中心自动化等功能。 以下是 VMware 公司提供的一些主要产品: V…

在VMware安装CentOS 7:详细教程

安装准备工作 本地虚拟机:我这里使用的是VMware Workstation 17 Pro centos7系统ISO镜像:我这里使用的是CentOS-7-x86_64-DVD-2009.iso,具体的下载地址是在阿里云官方镜像站:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿…

最大后验概率法

在贝叶斯统计中,最大后验概率(maximum a posteriori, MAP)估计是对后验分布的模的估计。MAP可根据经验数据获得未观测量的点估计。它与最大似然(ML)估计方法密切相关,但采用了一个包含先验分布的增强优化目…

PostgreSQL 数据库归档最近被问及的问题问题 与 4 毋 处世学

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请联系 liuaustin3 ,(共1790人左右 1 2 3 4 5&#xff0…

智慧工地云平台源码 支持二次开发、支持源码交付

智慧工地利用移动互联、物联网、云计算、大数据等新一代信息技术,彻底改变传统施工现场各参建方的交互方式、工作方式和管理模式,为建设集团、施工企业、监理单位、设计单位、政府监管部门等提供一揽子工地现场管理信息化解决方案。 通过人员管理、车辆管…

【产品应用】一体化步进伺服电机在自动稀释仪中的应用

在许多化学实验和生物实验中,稀释是一个关键步骤。为了提高稀释的准确性和效率,自动稀释仪被广泛使用。随着科技的进步,一体化步进伺服电机在自动稀释仪中的应用越来越广泛,大大提高了仪器的性能和效率。本文将详细介绍一体化步进…

Python函数进阶与文件操作

Python函数进阶与文件操作 一、作业回顾 1、格式化输出与%百分号 以下结果中,可以正常输出“50%及格”语句是(B) A、print(“%d%及格” % (50)) => 回答大部分结果(Python这种写法不正确) B、print(“%d%%及格” % (50)) => 正确结果 2、字符串切片 定义一个…

记一次修复外网无法访问vmware里面的虚拟机的网络端口的问题

发现一个奇怪的网络问题,vmware里一个程序的端口通过vmnat穿透出来,然后这个端口就能够通过局域网被其他机器访问,但是另一个网段就没法访问这个端口。使用主机上的其他程序使用开启同样的端口,另一个网段的机器却可以访问。我想不…

盘点 2023 公开的攻击面发现平台

针对可以直接购买并且明码标价的攻击面发现平台进行了对比,结果如下 测试用例: 企业(某制造有限公司)、高校(某职业学院) 测试对象: 零零信安攻击面管理平台 长亭云图极速版攻击面管理平台 …

Hash-based Message Authentication Code(HMAC)

一、引言 在现代信息安全领域,消息认证码(Message Authentication Code,简称MAC)起着至关重要的作用。Hash-based Message Authentication Code(基于哈希的MAC,简称HMAC)作为一种广泛应用的MAC…