?.操作符的作用

embedded/2024/9/20 13:36:40/ 标签: javascript, ecmascript

在编程中,?. 操作符通常被称为“可选链”(Optional Chaining)操作符,它主要用于JavaScript等现代编程语言中。这个操作符的主要作用是安全地访问深层嵌套的属性或方法,而无需在每一步都进行繁琐的null或undefined检查。

可选链操作符的作用包括:

  1. 安全访问属性:当尝试访问一个可能为null或undefined的对象的属性时,使用?.可以避免抛出TypeError异常。如果左侧的操作数(即对象)是null或undefined,则表达式短路返回undefined,而不会尝试访问其属性。

  2. 安全调用方法:同样地,?.也可以用于安全地调用可能不存在的方法。如果对象是null或undefined,则不会尝试调用该方法,而是返回undefined。

  3. 连续访问:可选链操作符可以连续使用,以安全地访问多层嵌套的属性或方法。如果中间任何一环是null或undefined,则整个表达式短路返回undefined。

示例代码:

javascript">const user = {  name: "Alice",  address: {  city: "New York"  }  
};  // 使用可选链操作符安全访问嵌套属性  
console.log(user?.address?.city); // 输出: "New York"  // 假设address为null  
user.address = null;  
console.log(user?.address?.city); // 输出: undefined,而不是抛出TypeError  // 尝试调用可能不存在的方法  
console.log(user?.someNonExistentMethod?.()); // 输出: undefined,而不是抛出TypeError

注意事项:

  • 可选链操作符?.在较新的JavaScript版本(如ES2020及以后)中可用。
  • 在使用可选链操作符时,需要注意它返回的是undefined,而不是抛出异常。因此,在需要对结果进行进一步处理时,需要考虑到undefined的情况。
  • 可选链操作符可以与逻辑操作符(如&&||)结合使用,以实现更复杂的逻辑判断。

总之,可选链操作符?.是JavaScript中一种非常有用的特性,它简化了对可能为null或undefined的对象的属性或方法的访问,提高了代码的健壮性和可读性。


http://www.ppmy.cn/embedded/107152.html

相关文章

帆软报表使用url访问报表,自定义前端搜索,优化报表展示

近期公司页面往报表方向迁移,正好选择了帆软报表,由我负责这一部分的业务代码修改,我们没有采用帆软的鉴权模式。再进行简单的报表展示后发现原始的帆软报表组件不符合前端的设计要求,查询帆软官网后发现要修改是比较繁琐的。 先看…

部署mongosh教程

1、上传软件包 将软件包上传到/usr/local目录下 部署 2.1 解压 tar zxvf mongosh-2.3.0-linux-x64.tgz 2.2 修改名称 mv mongosh-2.3.0-linux-x64/ mongosh 2.3 将 bin 目录中 mongosh 二进制文件复制到 PATH 变量中列出的目录中 sudo cp mongosh /usr/local/bin/ sudo cp …

JS设计模式之“神奇的魔术师” - 简单工厂模式

引言 在JavaScript开发中,我们经常需要创建和管理各种对象,而简单工厂模式就是一种最简单的用来创建对象的设计模式。 简单工厂模式通过一个工厂类来创建相似的对象,而无需直接使用具体类来实例化对象。这样可以将对象的创建过程与使用过程…

ITK-重采样

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 什么是重采样 重采样(Resampling) 是一种用于图像处理的技术,主要应用于对图像进行尺寸调整、…

支付宝线上小程序打开异常

1. 其他手机都可以正常访问线上版本,只有一个安卓手机不行(排除支付宝低版本以及手机系统问题) 2. 出现访问异常的手机都可以正常访问体验版以及开发版本 3. 尝试去关闭该手机的联调设置以及清除开发版缓存,成功访问线上版本 需要…

【LeetCode】02.两数相加

题目要求 做题链接:2.两数之和 思路解析 本题要求我们计算两个链表中存储的元素之和,并且明确的告诉了我们不包含前置0。这样的话我们只需要考虑进位与到链表末尾这两种情况,进位是每次都需要更新的,而到末尾的话,…

SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))

SpringBootVue实现大文件上传(断点续传) 1 环境 SpringBoot 3.2.1,Vue 2,ElementUI,spark-md5 2 问题 在前一篇文章,我们写了通过在前端控制的断点续传,但是有两个问题,第一个问题&…

SQL - SQL优化

在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考 一、查询SQL尽量不要使用select *,而是具体字段 // 建议 SELECT id,user_name,age,tel FROM user// 不建议…

C语言6大常用标准库 -- 1.<stdio.h>

目录 引言 1.<stdio.h>&#xff08;标准输入输出库&#xff09; 1.1 简介 1.2 库变量 1.3 库宏 1.4 库函数 &#x1f308;你好呀&#xff01;我是 程序猿 &#x1f30c; 2024感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&am…

不要玄之又玄:多线程相关知识点的通俗理解

这里是目录 线程和进程的区别多线程的几个对象线程池线程间的同步的方式 线程和进程的区别 进程是一个程序执行一次创建的&#xff0c;是系统运行程序的基本单位。线程是⼀个⽐进程更⼩的执⾏单位&#xff0c;一个进程在运行期间可以产生多个线程。多个线程可以共享进程的堆和…

QT做一个USB HID设备识别软件

1.下载 HidApi库&#xff1a;GitHub - yigityuce/HidApi: Human Interface Device Api (HidApi) with C 2.pro文件添加 DEFINES - UNICODE LIBS -lsetupapi 3.h文件 #ifndef My_Usb_Hid_Device_H #define My_Usb_Hid_Device_H#include <QWidget> #include <QStr…

nanogpt怎么进行模型切片,以实现推理过程算力共享,切多头

目录 nanogpt怎么进行模型切片,以实现推理过程算力共享,切多头 1. 多头并行与数据并行结合 2. 模型切片策略 3. 多头并行实现 4. 注意事项 5. 示例说明 大语言模型推理过程中多头切片运行,是从头到尾全部并行执行 1. 模型切片运行的概念 2. nanoGPT的特点 3. 并行…

Java常见排序算法详解

前言 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 在Java中&#xff0c;排序算法是一种对数据集合中的元素按照特定顺序进行排列的算法。排序算法通常用于将数据按照升序或者降序排列&#xff0c;…

SQLite 创建表:一场数据库里的“造物运动”

嘿&#xff0c;各位数据库的“造物主”们&#xff01;今天咱们来聊聊SQLite里的一场有趣活动——创建表。没错&#xff0c;就像上帝创造了世界&#xff0c;我们也可以在SQLite数据库里创造属于我们自己的“小世界”。 一、创建表的“魔法咒语” 在SQLite这个“魔法世界”里&a…

python办公自动化:使用`Python-PPTX`创建和操作表格

表格是演示文稿中用于组织和显示数据的重要工具。使用Python-PPTX库&#xff0c;您可以在幻灯片中创建和自定义表格&#xff0c;包括设置表格的大小、格式和内容。本节将介绍如何使用Python-PPTX库创建表格并进行各种操作。 1 创建基本表格 在Python-PPTX中&#xff0c;表格是…

2024年SRM管理系统盘点合集,助力企业选型!

本文将盘点六款主流的SRM管理系统&#xff0c;助力企业选型&#xff01; 想象一下这样一个场景&#xff0c;企业的采购部门每天都在为寻找合适的供应商、管理采购订单以及确保物资及时供应而忙碌。如果没有一个有效的 SRM 管理系统&#xff0c;就如同在黑暗中摸索&#xff0c;效…

智联云采 SRM2.0 autologin 身份认证绕过漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案,针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

Express与SQLite集成教程:轻松实现数据库操作

Express使用SQLite的教程可以大致分为以下几个步骤。以下是一个详细的指南&#xff0c;帮助你在Express项目中集成SQLite数据库。 1. 安装必要的库 首先&#xff0c;你需要在你的Express项目中安装sqlite3库。打开终端或命令提示符&#xff0c;切换到你的项目目录&#xff0c…

后端开发刷题 | 数组中的逆序对

描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 数据范围&#xff1a; 对于 50%50% 的数据, size≤1…

缓存分布式一致性问题

缓存一致性问题发生的原因&#xff0c;是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库&#xff0c;在写缓存。 进来两个请求&#xff0c;先执行“请求1”的操作写入数据…