07.ES11 08.ES12

7.1、Promise.allSettled

调用 allsettled 方法,返回的结果始终是成功的,返回的是promise结果值

 <script>//声明两个promise对象const p1 = new Promise((resolve, reject) => {setTimeout(() => {resolve("商品数据 - 1");}, 1000);});const p2 = new Promise((resolve, reject) => {setTimeout(() => {//   resolve("商品数据 - 2");reject('出错啦!');}, 1000);});//调用 allsettled 方法,返回的结果始终是成功的,返回的是promise结果值const res = Promise.allSettled([p1, p2]);console.log(res,'res');//调用all方法,返回的结果要根据Promise状态来决定,必须要全部成功,才能成功const res1 = Promise.all([p1, p2]);console.log(res1,'res1');</script>

7.2、动态 import 导入

标准用法的 import 导入的模块是静态的,会使所有被导入的模块,在加载时就被编译(无法做到按需编译,降低首页加载速度)。有些场景中,你可能希望根据条件导入模块或者按需导入模块,这时你可以使用动态导入代替静态导入。

即:动态导入是我需要的时候,再导入进来,然后调用,不需要的时候,我不导入

html文件

     <body><button id="btn">登录</button><script>// 用户输入用户名,密码function login() {return "普通用户";}let btn = document.querySelector("#btn");btn.onclick = function () {// 拿到用户名密码let role = login();// 将拿到的用户密码放到处理函数里render(role); //处理函数};async function render(role) {if (role == "管理员") {//  第一种写法// let res1 = import("./js/1.js"); //返回一个Promise对象// res1.then((res) => {//   console.log(res);// });// 第二种写法let res1 = await import("./js/1.js");console.log(res1);} else {// let res2 = import("./js/2.js"); //返回一个Promise对象// res2.then((res) => {//   console.log(res);// });// 第二种写法let res2 = await import("./js/2.js");console.log(res2);}}</script></body>

1.js 需要动态导入的js逻辑文件

console.log('hello.js');
export default{name:'管理员'
}}

2.js 需要动态导入的js逻辑文件

console.log("2.js");
export default {name: "普通用户",
};

7.3、BigInt

7.3.1、概念

BigInt数据类型提供了一种方法来表示大于2^53-1的整数。BigInt可以表示任意大的整数

适用场景:更加准确的使用时间戳和数值比较大的ID

7.3.2、BigInt()构造函数

  • 传递给BigInt()的参数将自动转换为BigInt
  • 无法转换的数据类型和值会引发异常
  • 除了不能使用一元加号运算符外,其他的运算符都可以使用
  • BigInt和Number之间不能进行混合操作
    <script>//大整形(用来做更大的数值运算)//语法:数字+n// let n = 521n;// console.log(n, typeof(n));//521n  'bigint'//(1)传递给BigInt()的参数将自动转换为BigInt// let n = 123;// console.log(BigInt(n));//123n//(2)无法转换的数据类型和值会引发异常// console.log(BigInt(1.2));// 不能有浮点数子,会报错//BigInt(null); //报错//BigInt("a"); // 报错//(3)BigInt除了不能使用一元加号运算符外,其他的运算符都可以使用//   console.log(BigInt(+1n));//报错let max = Number.MAX_SAFE_INTEGER; //最大安全整数console.log(max, "max"); //9007199254740991console.log(max + 1); //9007199254740992console.log(max + 2); 9007199254740992  不可以运算正确的结果了console.log(BigInt(max)); //9007199254740991nconsole.log(BigInt(max) + BigInt(1)); //9007199254740992nconsole.log(BigInt(max) + BigInt(2)); //9007199254740993n//   (4)BigInt和Number之间不能进行混合操作console.log(1n + 5); //报错</script>

7.4、globalThis 对象

globalThis 提供了一个标准的方式来获取不同环境下的全局 this 对象(也就是全局对象自身)。不像 window 或者 self这些属性,它确保可以在有无窗口的各种环境下正常工作。所以,你可以安心的使用 globalThis,不必担心它的运行环境。为便于记忆,你只需要记住,全局作用域中的 this 就是 globalThis。

 <script>console.log(globalThis);//Window</script>

7.5、String.matchAll

matchAll() 方法返回一个包含所有匹配正则表达式的结果的迭代器。可以使用 for...of 遍历,或者使用 展开运算符(...) 或者 Array.from 转换为数组.

    <script>// 需求,提取li中的内容let str = `<ul><li>1111</li><li>2222</li></ul>`;//声明正则const reg = /<li>(.*)<\/li>/g;//调用方法const result = str.matchAll(reg);console.log(result, "result");//result里有next()方法,可遍历for (let v of result) {//返回一个数组,[0]符合条件的每一项,[1]每一项里面的值// console.log(v, "v");}</script>

7.6、可选链操作符

语法:?.

判断前面的值有没有传入,如果传了继续读取后面的属性,如果没有传,那就返回undefined,也不会报错 ,免去了做层层判断

  <script>function main(obj) {const person = obj?.one?.name;// const person = obj?.one?.name?.age;//undefinedconsole.log(person);//张三}main({one: {name: "张三",sex: "男",},two: {name: "李四",sex: "男",},});</script>

7.7、空值合并运算符

空值合并运算符(??)是一个逻辑运算符。

当左侧操作数为 null 或 undefined 时,其返回右侧的操作数。否则返回左侧的操作数。

   <script>let obj = {name: "张三",age: 18,};// ||或运算符  像亲情,找true   &&与运算符 像爱情,找false// console.log(obj.age || "年龄不详"); //18// console.log(obj.age && "年龄不详"); //'年龄不详'// ??// console.log(obj.age ?? "19"); // 18// console.log(obj.age1 ?? "19"); //19//  || 或运算符无法区分false、0、空字符串和null/undefined//  ??无法识别null/undefined// console.log(false ||'你好');//你好// console.log(false ??'你好');//false//   console.log(''||'hello');//hello//   console.log(''??'hello');//返回空// console.log(0 || "你好"); //你好// console.log(0 ?? "hello"); //0// console.log(null || "你好1"); //你好// console.log(null ?? "hello1"); //hello// console.log(undefined || "你好2"); //你好// console.log(undefined ?? "hello2"); //hello</script>

??和 || 的区别是什么呢?

他们两个最大的区别就是 ' '和 0,??的左侧 为 ' '或者为 0 的时候,依然会返回左侧的值;

|| 会对左侧的数据进行boolean类型转换,所以’ '和 0 会被转换成false,返回右侧的值

8.1、逻辑赋值操作符

逻辑赋值操作符 ??=、&&=、 ||=

 <script>let a = true;let b = false;//console.log(a || b);//true//console.log(a && b);//falsea ||= b; //a=a||b//console.log(a); //truea &&= b; //a=a&&b//console.log(a); //falselet obj = {name: "章三",};//   obj.name ??= "李四";//   console.log(obj.name);obj.age ??= 18;console.log(obj.age);</script>

8.2、数字分隔符

这个新特性是为了方便程序员看代码而出现的,如果数字比较大,那么看起来就不是那么一目了然

分隔符不仅可以分割十进制,也可以分割二进值或者十六进值的数据,非常好用

  <script>let num=123456789let num1=123_456_789console.log(num===num1);//true</script>

8.3、 replaceAll

所有匹配都会被替代项替换。模式可以是字符串或正则表达式,而替换项可以是字符串或针对每次匹配执行的函数。并返回一个全新的字符串

 <script>let str = "Lorem,Lorem ipsum dolor sit Lorem.";let newStr = str.replaceAll("Lorem",'*');console.log(newStr);//*,* ipsum dolor sit *.</script>

8.4、Promise.any

只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态;如果所有参数实例都变成rejected状态,包装实例就会变成rejected状态。

<script>let ajax1 = function () {return new Promise((resolve, reject) => {reject("失败1");});};let ajax2 = function () {return new Promise((resolve, reject) => {reject("失败2");});};let ajax3 = function () {return new Promise((resolve, reject) => {reject("失败3");// resolve('成功')});};Promise.any([ajax1(), ajax2(), ajax3()]).then((res) => {console.log(res);}).catch((err) => {console.log("err", err);});</script>

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

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

相关文章

git 上传代码时报错

在上传代码时&#xff0c;显示无法上传 PS E:\JavaWeb\vue3-project> git push To https://gitee.com/evening-breeze-2003/vue3.git! [rejected] master -> master (non-fast-forward) error: failed to push some refs to https://gitee.com/evening-breeze-20…

视觉语言模型(VLM)学习笔记

目录 应用场景举例 VLM 的总体架构包括&#xff1a; 深度解析&#xff1a;图像编码器的实现 图像编码器&#xff1a;视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑&#xff1a;你输入 “生成一张…

digit_eye开发记录(3): C语言读取MNIST数据集

在前两篇&#xff0c;我们解读了 MNIST 数据集的 IDX 文件格式&#xff0c;并分别用 C 和 Python 做了 读取 MNIST 数据集的实现。 基于 C 的代码稍长&#xff0c;基于 Python 的代码则明显更短&#xff0c;然而它们的共同特点是&#xff1a;依赖了外部库&#xff1a; 基于 C …

C#窗体小程序计算器

使其能完成2个数的加、减、乘、除基本运算。界面如下图&#xff0c;单击相应的运算符按钮&#xff0c;则完成相应的运算&#xff0c;并将结果显示出来&#xff0c;同时不允许在结果栏中输入内容 代码如下&#xff1a; private void button1_Click(object sender, EventArgs e)…

Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题

目录 1. root用户&#xff08;超级管理员&#xff09; 1.1 用于账户切换的系统命令——su 1.2 退回上一个用户命令——exit 1.3 普通命令临时授权root身份执行——sudo 1.3.1 为普通用户配置sudo认证 2. 用户/用户组管理 2.1 用户组管理 2.2 用户管理 2.2.1 …

【JavaEE】JavaEE、web 开发、框架(Spring) 、Maven

文章目录 一、JavaEE 发展历程二、什么是 web 开发1、什么是 web 开发&#xff1f;2、web 网站的工作流程 三、框架1、什么是框架&#xff1f;2、为什么要学框架&#xff1f;3、框架的优点&#xff08;Spring Boot VS Servlet&#xff09; 四、Maven 一、JavaEE 发展历程 Java…

虚拟机玩游戏,轻松实现多开不同IP

嘿&#xff0c;亲爱的游戏小伙伴们&#xff01;今天要和大家分享一个超级实用的技巧&#xff0c;让你在游戏中轻松多开不同IP&#xff0c;享受开挂的乐趣&#xff01; 第一步&#xff1a;准备虚拟机 首先&#xff0c;你需要下载一个虚拟机软件&#xff0c;比如VMware或者Virt…

MySQL常用语句整理

《SQL必知必会》(第3版)SQL是目前使用最为广泛的数据库语言之一。本书没有涉及理论&#xff0c;而是从实践出发&#xff0c;由浅入深地讲解了广大读者所必需的SQL知识&#xff0c;适用于各种主流数据库。实例丰富&#xff0c;便于查阅。本书涉及不同平台上数据的排序、过滤和分…

【MATLAB】基于RSSI的蓝牙定位与例程,设置4个基站、二维定位

目录 ​编辑 商品描述 主要功能 技术细节 适用场景 下载链接 商品描述 这款基于接收信号强度指示&#xff08;RSSI&#xff09;原理的蓝牙定位程序&#xff0c;专为需要高效、可靠定位解决方案的开发者和研究人员设计。它能够在二维平面内&#xff0c;通过4个锚点实现对未…

DreamCamera2相机预览变形的处理

最近遇到一个问题&#xff0c;相机更换了摄像头后&#xff0c;发现人像角度顺时针旋转了90度&#xff0c;待人像角度正常后&#xff0c;发现 预览时图像有挤压变形&#xff0c;最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示&#xff0c;顺时针旋…

鸿蒙修饰符

文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…

phpmyadmin导出wordpress数据教程

网站搬家或网站修改&#xff0c;需要导出数据或备份数据&#xff0c;一般主机控制面板最常用phpmyadmin。下面这个是一个有详细图文操作步骤的phpmyadmin导出wordpress数据教程。 1、先登陆到你主机的管理面板&#xff0c;找到数据库&#xff0c;再找到phpmyadmin&#xff0c;…

阅读笔记——SVD本质+计算+应用

摘要&#xff1a;本文讨论了正交相似对角化的方法&#xff0c;几何含义&#xff1b;方阵&#xff0c;非方阵的奇异值分解的计算&#xff0c;矫正方法以及与正交相似对角化存在区别&#xff1b;最后讨论了奇异值分解的应用。 1.实对称矩阵A的变换是一种线性变换&#xff0c;对应…

Linux网络_网络协议_网络传输_网络字节序

一.协议 1.概念 协议&#xff08;Protocol&#xff09; 是一组规则和约定&#xff0c;用于定义计算机网络中不同设备之间如何进行通信和数据交换。协议规定了数据的格式、传输方式、传输顺序等详细规则&#xff0c;确保不同设备和系统能够有效地互联互通。 在网络通信中&#…

数据结构 (16)特殊矩阵的压缩存储

前言 特殊矩阵的压缩存储是数据结构中的一个重要概念&#xff0c;它旨在通过找出特殊矩阵中值相同的矩阵元素的分布规律&#xff0c;把那些呈现规律性分布的、值相同的多个矩阵元素压缩存储到一个存储空间中&#xff0c;从而节省存储空间。 一、特殊矩阵的定义 特殊矩阵是指具有…

ehr系统建设方案,人力资源功能模块主要分为哪些,hrm平台实际案例源码,springboot人力资源系统,vue,JAVA语言hr系统(源码)

eHR人力资源管理系统&#xff1a;功能强大的人力资源管理工具 随着企业规模的不断扩大和业务需求的多样化&#xff0c;传统的人力资源管理模式已无法满足现代企业的需求。eHR人力资源管理系统作为一种先进的管理工具&#xff0c;能够为企业提供高效、准确、实时的人力资源管理。…

搭建AD域服务器

搭建AD域服务器 使用深信服HCI搭建AD域服务器 1、新建虚拟机 2、填写参数 3、省略安装过程 4、进入服务器管理器 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、

MOH: MULTI-HEAD ATTENTION AS MIXTURE-OFHEAD ATTENTION

当前的问题 多头注意力使用多个头部可以提高模型的精度。然而&#xff0c;并不是所有的注意力头都具有同样的重要性。一些研究表明&#xff0c;许多注意力头可以被修剪而不影响准确性。 此外&#xff0c;在多头注意中&#xff0c;每个注意头并行操作&#xff0c;最终输出是所…

Spring boot之BeanDefinition介绍

在spring框架中IOC容器进行bean的创建和管理。Bean的创建是一个比较复杂的过程&#xff0c;它并不像我们创建对象一样只是直接new一下就行&#xff0c;虽然有些bean确实就是New一下。但在Spring中可以通过一些途径对bean进行增强扩展。在这个过程中&#xff0c;BeanDefinition作…

Ubuntu 服务器部署 Tomcat 并配置 SSL/TLS 证书

本文目录 准备登陆云服务器安装 Java下载 tomcat 包配置防火墙浏览器访问 Tomcat 默认页面以服务的形式运行 Tomcat创建 Tomcat 用户和组创建 systemd 服务文件启动 tomcat 服务 Tomcat webapps 文件目录部署一个静态网站tomcat 的配置文件 将域名解析到服务器Tomcat 配置 SSL/…