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.mzph.cn/news/585410.shtml

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

相关文章

最新AI系统ChatGPT网站H5系统源码,支持AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

经典文献阅读之--OccNeRF(基于神经辐射场的自监督多相机占用预测)

0. 简介 作为基于视觉感知的基本任务,3D占据预测重建了周围环境的3D结构。它为自动驾驶规划和导航提供了详细信息。然而,大多数现有方法严重依赖于激光雷达点云来生成占据地面真实性,而这在基于视觉的系统中是不可用的。之前我们介绍了《经典…

【 ATU NXP-SBC 系列 】FS26XX GUI_OTP烧录与模拟操作

1. 概述 FS26XX 为了其安全性需求,针对重要暂存器的配置,使用 one time program 的功能,避免不小心修改重要暂存器,导致发生重大意外,使系统丧失功能安全性。FS26XX 也可以让使用者先测试 OTP 后的结果功能&#xff0…

微信小程序开发系列-03全局配置中的“window”和“tabBar”

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…

C# 如何使用?、? 和 ??的区别和使用案例

目录 ? 运算符 使用案例 ?? 运算符 使用案例 总结 在 C# 中,? 和 ?? 运算符在处理 null 值时起着不同的作用,并且具有特定的使用场景。 ? 运算符 ? 运算符,也称为空条件运算符,在 C# 6.0 及更高版本中引入。它允许…

08-React路由(Router 6版本)

Router5和Router6的变化 部分标签产生了变化,之前的标签都有了替(主要集中在Route匹配上),所以这里先回顾一下Router5,同时引出Router6的一些新特性 其次,React官方在推出Router6之后,就明确推…

OpenCV-Python(9):图像基础操作

目录 学习目标 获取图像像素并修改像素值 获取图像属性 图像ROI 拆分及合并图像通道 图像边缘扩充 学习目标 获取像素值并修改获取图像的属性(信息)图像的ROI获取图像通道拆分及合并图像扩边 获取图像像素并修改像素值 几乎所有这些操作与Numpy 的关系要比与OpenCV 的…

【电商项目实战】MD5登录加密及JSR303自定义注解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《电商项目实战》。🎯🎯 &am…

飞书文档如何转markdown

飞书文档如何转markdown 实现效果实现步骤其他方法 实现效果 导出的结果挂在这了 https://thinkasany.github.io/docs/#/ 实现步骤 以https://upyun.feishu.cn/docx/KERsd1DpioPb1xxye9VcuXbhnBC这篇文章为例 使用工具 https://github.com/Wsine/feishu2md,提供了…

案例-旋转的太极图案(HTML+CSS)

使用css的动画变换效果完成“ 旋转太极“。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;background-color: antiquewhite;}.tj{width: 0;height: 300px;/* border…

AWTK 开源串口屏开发(4) - 采用数据

AWTK 开源串口屏开发 - 数据采集 1. 功能 数据采集是一个常用的功能&#xff0c;MCU 定时采集数据&#xff08;如环保设备定时采样空气中的污染物&#xff09;&#xff0c;并发送采样数据到串口屏&#xff0c;串口屏可以显示采样数据&#xff0c;也可以对采样数据进行管理&am…

68.乐理基础-打拍子-大附点与变体

上一节内容&#xff1a;66.乐理基础-打拍子-小切分-CSDN博客&#xff0c;只所以没有67因为67可以不用知道&#xff0c;67节内容在&#xff1a;※-打拍子&#xff08;8&#xff09;-一拍内的变体1-乐理教程-腾讯课堂 (qq.com) 大附点&#xff1a;大附点这个名字不是通用的&…

基于element-ui table组件的二次封装

文章目录 配置数据基础分析封装 el-table-column使用插槽强化结语 相信 element-ui 大家都有所耳闻&#xff0c;table 也是老朋友了&#xff0c;不过在使用它的时候大家是怎么使用的呢&#xff1f;是直接在官网上cv使用吗&#xff1f;这种方式&#xff0c;我相信写起来会有点小…

【教学类-43-02】20231226 九宫格数独2.0(n=9)(ChatGPT AI对话大师生成 回溯算法)

作品展示&#xff1a; 背景需求&#xff1a; 大4班20号说&#xff1a;我不会做这种&#xff08;九宫格&#xff09;&#xff0c;我做的是小格子的&#xff0c; 他把手工纸翻过来&#xff0c;在反面自己画了矩阵格子。向我展示&#xff1a; “我会做这种&#xff01;” 原来他…

OCR在审核应用落地

本文字数&#xff1a;6686字 预计阅读时间&#xff1a;35分钟 01 背景 1、业务背景 在传统视频审核场景中&#xff0c;审核人员需要对进审视频中的文字内容进行逐一审核&#xff0c;避免在文字上出现敏感词、违禁词或者广告等相关词汇。这种人工审核费时费力&#xff0c;并且由…

python+django网上购物商城系统o9m4k

语言&#xff1a;Python 框架&#xff1a;django/flask可以定制 软件版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发工具pycharm/vscode都可以 前端框架:vue.js 系统使用过程主要涉及到管理员和用户两种角色&#xff0c;主要包含个…

TSR勾画学习

1&#xff1a;勾画建议 文献&#xff1a;Scoring the tumor-stroma ratio in colon cancer: procedure and recommendations 主要讲述的是结肠癌(CRC)的勾画建议和流程。 1&#xff0c;切片选择建议&#xff1a; 原发肿瘤的载玻片最具侵袭性的部分&#xff08;即常规病理学…

PiflowX组件-ReadFromKafka

ReadFromKafka组件 组件说明 从kafka中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport&#xff1a;默认端口 outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号分隔的Ka…

【目标检测】yolov8结构及代码分析

yolov8代码:https://github.com/ultralytics/ultralytics yolov8的整体结构如下图&#xff08;来自mmyolo&#xff09;&#xff1a; yolov8的配置文件&#xff1a; # Ultralytics YOLO &#x1f680;, AGPL-3.0 license # YOLOv8 object detection model with P3-P5 outputs.…

偏好对齐RLHF-OpenAI·DeepMind·Anthropic对比分析

OpenAI paper: InstructGPT, Training language models to follow instructions with human feedback paper: Learning to summarize from human feedback Introducing ChatGPT 解密Prompt系列4介绍了InstructGPT指令微调的部分&#xff0c;这里只看偏好对齐的部分 样本构建…