03.ES7 04.ES8

news2024/11/30 16:16:32

3.1.Array.includes

Includes 方法用来检测数组中是否包含某个元素,返回布尔类型值

    <script>
        // includes   
        const mingzhu = ['王二','张三','李四','王五'];
        //判断
        console.log(mingzhu.includes('张三'));//true
        console.log(mingzhu.includes('周六'));//false
        
        //indexOf  是否存在数组中  返回的是数字
        console.log(mingzhu.indexOf('张三'));//1
        console.log(mingzhu.indexOf('周六'));//-1
    </script>

3.2、** 指数操作符

在 ES7 中引入指数运算符「**」,用来实现幂运算,功能与 Math.pow 结果相同

console.log(2 ** 10); //1024
console.log(Math.pow(2, 10));//1024

4.1、async 和 await

async 和 await 两种语法结合可以让异步代码像同步代码一样

4.1.1、async 函数

async 是一个修饰符,async 定义的函数会默认的返回一个Promise对象resolve(已定型成功或失败)的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数。

  • async 函数的返回值为 promise 对象,
  • promise 对象的结果由 async 函数执行的返回值决定
    • 返回的结果不是一个 Promise 类型的对象, 是字符串、数字、undefined等,就是成功的结果
    • 抛出错误, 返回的结果是一个失败的 Promise
    • 返回的结果如果是一个 Promise 对象,根据Promise返回的结果确定状态
 <script>
      //async 函数
      async function fn() {
        /* 1: 返回的结果不是一个 Promise 类型的对象, 是字符串、数字、undefined等
        返回的结果就是成功 Promise 对象 */
        // return 'bdqn';
        // return;  
        // 2:抛出错误, 返回的结果是一个失败的 Promise
        throw new Error('出错啦!');
        // 3:返回的结果如果是一个 Promise 对象,根据Promise返回的结果确定状态
        // return new Promise((resolve, reject) => {
        //   resolve("成功的数据");
        //   reject("失败的错误");
        // });
      }


      const result = fn();


      //调用 then 方法
      result.then(
        (value) => {
          console.log(value,'成功回调');
        },
        (reason) => {
          console.warn(reason,'失败回调');
        }
      );
    </script>

4.1.2、await 表达式

  • await 必须写在 async 函数中
  • await 右侧的表达式一般为 promise 对象
  • await 返回的是 promise 成功的值
  • await 的 promise 失败了, 就会抛出异常, 需要通过 try...catch 捕获处理
  <script>
      //创建 promise 对象
      const p = new Promise((resolve, reject) => {
        // resolve("用户数据");
        reject("失败啦!");
      });


      //1: await 要放在 async 函数中. await单向依赖async
      async function main() {
        try {
          // result 是Promise对象成功的值
          let result = await p;
          console.log(result, "async,await");
        } catch (e) {
          //e返回的 是Promise对象失败的值
          console.log(e, "async,await");
        }
      }
      //调用函数
      main();


      // Promise调用then方法
     /*  p.then(
        (v) => {
          console.log(v, "then方法");
        },
        (r) => {
          console.log(r, "then方法");
        }
      ); */
    </script>

4.1.3、async与await封装AJAX请求

  <script>
      // 发送 AJAX 请求, 返回的结果是 Promise 对象
      function sendAJAX(url) {
        return new Promise((resolve, reject) => {
          //1. 创建对象
          const x = new XMLHttpRequest();

          //2. 初始化
          x.open("GET", url);

          //3. 发送
          x.send();

          //4. 事件绑定
          x.onreadystatechange = function () {
            if (x.readyState === 4) {
              if (x.status >= 200 && x.status < 300) {
                //成功啦
                resolve(x.response);
              } else {
                //如果失败
                reject(x.status);
              }
            }
          };
        });
      }

      //第一种:promise then 方法测试
      // sendAJAX("https://api.apiopen.top/getJoke").then(value=>{
      //     console.log(value);
      // }, reason=>{})

      //第二种: async 与 await 测试  axios
      async function main() {
        //发送 AJAX 请求
        let result = await sendAJAX("https://api.apiopen.top/getJoke");
        console.log(result);
      }

      main();
    </script>

4.2、对象方法扩展

4.2.1、Object.values 和 Object.entries

  • Object.values()方法返回一个给定对象的所有可枚举属性值的数组
  • Object.entries()方法返回一个给定对象自身可遍历属性 [key,value] 的数组
   <script>
      //声明对象
      const school = {
        name: "bdqn",
        cities: ["北京", "上海", "深圳"],
        xueke: ["前端", "Java", "大数据", "测试"],
      };


      //获取对象所有的键
      console.log(Object.keys(school),'key');//['name', 'cities', 'xueke'] 'key'
      //获取对象所有的值
      console.log(Object.values(school),'value');//['bdqn', Array(3), Array(4)] 'value'
      //entries  返回的是一个数组,数组里放一组组数组,里面是键,值
      console.log(Object.entries(school),'entries');
      //有了上面的entries结果,方便创建 Map
      // const m = new Map(Object.entries(school));
      // console.log(m,'map');
    </script>

4.2.2、Object.getOwnPropertyDescriptors

该方法返回指定对象所有自身属性的描述对象

补充

Object.create( proto[,propertiesObject] )

参数

proto:创建对象的原型,表示要继承的对象

propertiesObject(可选 ):也是一个对象,用于对新创建的对象进行初始化

  <script>
      //声明对象
      const school = {
        name: "bdqn",
        cities: ["北京", "上海", "深圳"],
        xueke: ["前端", "Java", "大数据", "测试"],
      };
      //对象属性的描述对象
      console.log(Object.getOwnPropertyDescriptors(school),'111');
      
      //  可以对对象深层次的克隆
      const obj = Object.create(null, {
        name: {
          //设置值
          value: "bdqn",
          //属性特性
          writable: true,//是否可写
          configurable: true,//是否可以删除
          enumerable: true,//是否可以遍历
        },
      });
    </script>

4.3、字符串填充

padStart()、padEnd()方法可以使得字符串达到固定长度,

有两个参数,字符串目标长度和填充内容。

  <script>
      let str = "hello";
      console.log(str.padStart(10, "m")); //mmmmmhello
      console.log(str.padEnd(10, "m")); //hellommmmm
      console.log(str.padStart(5, "m")); //hello,如果长度不够,就不添加
      console.log(str.padEnd(5, "m")); //hello
    </script>

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

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

相关文章

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…

下载安装Android Studio

&#xff08;一&#xff09;Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会&#xff0c;出现 点同意后&#xff0…

【解决方案】pycharm出现 为项目选择的Python解释器无效

文章目录 1.问题重述2.解决方案END 1.问题重述 第二次启动项目的时候出现 2.解决方案 右下角点 先选无解释器&#xff0c;然后在用项目配置好的解释器&#xff0c;然后就好了&#xff0c;估计是第二次启动的时候没有识别到&#xff0c;UI的信号设置的问题 END

浏览器的数据六种存储方法比较 :LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite

在构建该 Web 应用程序&#xff0c;并且希望将数据存储在用户浏览器中。也许您只需要存储一些小标志&#xff0c;或者甚至需要一个成熟的数据库。 我们构建的 Web 应用程序类型发生了显着变化。在网络发展的早期&#xff0c;我们提供静态 html 文件。然后我们提供动态渲染的 h…

linux一键部署apache脚本

分享一下自己制作的一键部署apache脚本&#xff1a; 脚本已和当前文章绑定&#xff0c;请移步下载&#xff08;免费&#xff01;免费&#xff01;免费&#xff01;&#xff09; &#xff08;单纯的分享&#xff01;&#xff09; 步骤&#xff1a; 将文件/内容上传到终端中 …

Java ConcurrentHashMap

Java Map本质不是线程安全的&#xff0c;HashTable和Collections同步包装器&#xff08;Synchronized Wrapper&#xff09;在并发场景下性能低。Java还为实现 Map 的线程安全提供了并发包&#xff0c;保证线程安全的方式从synchronize简单方式到精细化&#xff0c;比如Concurre…

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网&#xff1a;https://redis.io 开发者&#xff1a;Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统&#xff0c;它支持多种数据结构&…

C# 解决【托管调试助手 “ContextSwitchDeadlock“:……】问题

文章目录 一、遇到问题二、解决办法 一、遇到问题 托管调试助手 “ContextSwitchDeadlock”:“CLR 无法从 COM 上下文 0x56e81e70 转换为 COM 上下文 0x56e81d48&#xff0c;这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows …

系统学习算法: 专题二 滑动窗口

题目一&#xff1a; 算法原理&#xff1a; 依然第一反应是暴力枚举&#xff0c;将所有的子数组都枚举出来&#xff0c;找到满足条件的长度最小的子数组&#xff0c;但是需要两层循环&#xff0c;时间复杂度来到O&#xff08;N^2&#xff09; 接下来就该思考如何进行优化 如果…

QGIS制作xyz切片(mbtiles)

MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用&#xff0c;管理和分享的规范。它使得数以百万的瓦片数据存储在一个文件中&#xff0c;而且SQLite数据库支持多种平台&#xff0c;所以使用MBTiles在移动设备上浏览瓦片数据是比较理想的方式。 QGI…

软件测试——性能测试工具JMeter

1.JMeter介绍 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 环境要求&#xff1a; ​ 需要Java8或者更高的版本。 1.1 JMeter的下…

【C++算法】20.二分查找算法_x 的平方根

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 69. x 的平方根 题目描述&#xff1a; 解法 暴力解法&#xff1a; 如果x17 从1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5......这些数里面找他们的平方…

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

作者&#xff1a;陈承 背景 在 2018 年的 2 月&#xff0c;ARMS Java Agent 的第一个版本正式发布&#xff0c;为用户提供无侵入的的可观测数据采集服务。6 年后的今天&#xff0c;随着软件技术的迅猛发展、业务场景的逐渐丰富、用户规模的快速增长&#xff0c;我们逐渐发现过…

【项目日记】仿mudou的高并发服务器 --- 实现HTTP服务器

对于生命&#xff0c;你不妨大胆一点&#xff0c; 因为我们始终要失去它。 --- 尼采 --- ✨✨✨项目地址在这里 ✨✨✨ ✨✨✨https://gitee.com/penggli_2_0/TcpServer✨✨✨ 仿mudou的高并发服务器 1 前言2 Util工具类3 HTTP协议3.1 HTTP请求3.2 HTTP应答 4 上下文解析模块…

从0在自己机器上部署AlphaFold 3

本文介绍如何在自己本地机器上安装AlphaFold 3。 在10月份&#xff0c;Google DeepMind的首席执行官Demis Hassabis和高级研究科学家John M. Jumper所领导的团队&#xff0c;利用AI技术成功预测了几乎所有已知蛋白质的结构&#xff0c;开发出备受赞誉的AlphaFold&#xff0c;并…

faiss库中ivf-sq(ScalarQuantizer,标量量化)代码解读-6

调试 经过gdb调试获取的调用栈内容如下&#xff0c;链接&#xff1a; 步骤函数名称文件位置说明1faiss::IndexFlatCodes::add/faiss/IndexFlatCodes.cpp:24在 add 方法中&#xff0c;检查是否已经训练完成&#xff0c;准备添加向量到索引中。2std::vector<unsigned char&g…

SQL进阶——子查询与视图

在SQL中&#xff0c;子查询和视图是两种强大的技术&#xff0c;用于处理复杂的查询、提高代码的重用性以及优化查询性能。子查询允许开发者在查询中嵌套其他查询&#xff0c;而视图则是对复杂查询的封装&#xff0c;可以简化开发工作并提高代码的可维护性。 本章将深入探讨如何…

【论文阅读】 Learning to Upsample by Learning to Sample

论文结构目录 一、之前的上采样器二、DySample概述三、不同上采样器比较四、整体架构五、设计过程&#xff08;1&#xff09;初步设计&#xff08;2&#xff09;第一次修改&#xff08;3&#xff09;第二次修改&#xff08;4&#xff09;第三次修改 六、DySample四种变体七、复…

Online Judge——【前端项目初始化】项目通用布局开发及初始化

目录 一、新建layouts二、更新App.vue文件三、选择一个布局&#xff08;Layout&#xff09;四、通用菜单Menu的实现菜单路由改为读取路由文件 五、绑定跳转事件六、同步路由到菜单项 一、新建layouts 这里新建一个专门存放布局的布局文件layouts&#xff1a; 然后在该文件夹&…

uniapp首页样式,实现菜单导航结构

实现菜单导航结构 1.导入字体图标库需要的文件 2.修改引用路径iconfont.css 3.导入到App.vue中 <style>import url(./static/font/iconfont.css); </style>导航区域代码 VUE代码 <template><view class"home"><!-- 导航区域 --><…