【JS】中 ?.、??、??= 的用法和含义

news2024/11/15 16:00:53

今天分享几个处理空值简单的方法,避免使用三目运算、与或、if else时增加冗余的代,希望对大家有帮助。

 可选链(?.)

let a;
let b = a.?age;

含义:

可选链,只有当a存在,同时 a 具有 age 属性的时候,才会把值赋给b,否则就会将 undefined 赋值给 b,重要的是,不管a存在与否,a.?age 都不会报错。

示例:

不使用( ?. )时:

如果一个值为null、或者是undefined.那么我们再去用点操作符去调用一个方法或者访问一个属性会发生什么?

let a;
let b = a.age;

 运行代码,就会得到一个报错;

 使用( ?. )时:

let a;
let b = a?.age;

运行代码,打印出一个 undefined ;

空值合并运算符(??)

let a;
let b=a??c;

含义:

空值合并运算符(??) ,如果 a 不为 undefined、或者null ,那么 将会把a 赋值给 b ,如果a 为 undefined、或者null,那么就会把 c 赋值给 b。

示例:

不使用( ?? )

var u_defaultValueIfUndfined = function (value, defaultValue) {
  if (typeof value == "undefined" || value == null) {
    return defaultValue;
  }
  return value;
};
let a;
let c=1;  // []、0、“字符串” 等均可
let b =  u_defaultValueIfUndfined(a,c);

使用( ??)

let a;
let c=1;  // []、0、“字符串” 等均可
let b=a ?? c;

 上方两个代码示例效果一样;

空值赋值运算符(??=)

b ??= a;

和上面的( ?? )例子类似

含义: 

 当 ??= 左侧的值为 null 、undefined 的时候,才会将右侧变量的值赋值给左侧变量,其他所有值都不会进行赋值.同样在一些场景下,可以省略很多代码。

示例:

let b = '你好';
let a = 0
let c = null;
let d = ’123‘
b ??= a;  // b = “你好”
c ??= d  // c = '123'

 运行代码,结果如下:

 

好了,今天的分享就到这里啦,欢迎交流!

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

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

相关文章

【FPGA入门】第二篇、ISE软件的使用

目录 第一部分、新建工程 第二部分、添加顶层文件 第三部分、添加管脚约束文件 第四部分、生成bit文件 第五部分、连接开发板,下载bit文件 第六部分、总结 第一部分、新建工程 第一步、如果提前建立了工程文件夹,那么这里就需要去掉生成子文件夹的…

字符串--const类型限定符、字符处理函数(修改首字母的大小写)、数值字符串向数值得转换

目录 一、const类型限定符 二、字符处理函数 三、数值字符串向函数值转换 一、const类型限定符 通过采用指针或数组作函数参数,可使调用者获得修改后的数据,但有时我们只希望将数据传到被调函数的内部,而并不希望它们在函数内被修改&…

Spring6 JdbcTemplate和事务

文章目录 1、JdbcTemplate1.1、简介1.2、准备工作1.3、实现CURD①装配 JdbcTemplate②测试增删改功能③查询数据返回对象④查询数据返回list集合⑤查询返回单个的值 2、声明式事务概念2.1、事务基本概念①什么是事务②事务的特性 2.2、编程式事务2.3、声明式事务 3、基于注解的…

AI无处不在,科技改变生活:开放原子全球开源峰会参会感悟

目录 前言 英特尔的开源之路 拥抱人工智能 AIGC的浪潮之巅 全链路AI解决方案 极致性能优化 结束语 前言 2023年开放原子全球开源峰会 目前中国源代码贡献量已达到世界第二,开源软件开发者数量也已突破800万,居全球第二。在众多开发者的关注下&…

2.部署Keystone服务

在OpenStack的框架体系中Keystone的作用类似于一个服务总线,为OpenStack提供身份管理服务,包括用户认证,服务认证和口令认证,其他服务通过Keystone来注册服务的Endpoint(端点),针对服务的任何调…

50 最佳实践-安全最佳实践-Libvirt鉴权

文章目录 50 最佳实践-安全最佳实践-Libvirt鉴权50.1 简介50.2 开启libvirt鉴权50.3 管理SASL 50 最佳实践-安全最佳实践-Libvirt鉴权 50.1 简介 用户使用libvirt远程调用功能时,如果不进行任何鉴权校验,所有连接到主机所在网络的第三方程序都可以通过…

一道北大强基题背后的故事(四)——数学之美,美在哪里?

早点关注我,精彩不错过! 在前面文章中,我们重点聊了[((1 sqrt(5)) / 2) ^ 12]这道题可能的弯路,出题思路和这道题设计巧妙的结论,相关内容请戳: 一道北大强基题背后的故事(三)——什…

MTK 平台相机bringup流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Camera 框架介绍二、Camera Bringup 需要配置的文件三、复盘总结 一、Camera 框架介绍 Camera 的框架分为 Kernel 部分和 hal 部分,其中…

需求分析引言:架构漫谈(一)

本文主要对架构的概念做一些介绍,并引申出需求分析的重要性。 后续准备做一个系列,定期介绍我工作以来的一些需求实现的案例。 注:因为架构的内容比较庞大,里面的每个点,都可以扩展成一系列的文章, 因此&am…

基于Java精品酒销售管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

PoseiSwap 即将在 6 月 18 日开启 IDO,白名单申请者超 14000 人

根据PoseiSwap官方公告,PoseiSwap正式确定了将在6月18日0:00(UTC)正式在Bounce上开启IDO活动,目前本次活动的白名单申请用户已经突破了14000人。除了Bounce外,PoseiSwap将陆续在BitForex(6月23日…

uniapp + vue3 + uviewPlus 搭建多端项目框架

随着vite.js越来越受开发者青睐,很多大厂的项目都偏向于vue3开发,想着uniapp搭配vite4.x搭建多端项目效果会怎么样?经过一番实践发现果然不错! 版本信息 HBuilderX: 3.8.4 Vite: 4.2.1 uView-Plus: 3.1.31初始化uniappvue3项目 …

PSINS工具箱学习(一)下载安装初始化、SINS-GPS组合导航仿真、习惯约定与常用变量符号、数据导入转换、绘图显示

文章目录 一、前言二、相关资源三、下载安装初始化1、下载PSINSyymmdd.rar工具箱文件2、解压文件3、初始化4、启动工具箱导览 四、习惯约定与常用变量符号1、PSINS全局变量结构体 glv2、坐标系定义3、姿态阵/姿态四元数/欧拉角 Cnb/qnb/att4、IMU采样数据 imu5、AVP导航参数 av…

Python基础(5)——变量

Python基础(5)——变量 文章目录 Python基础(5)——变量目标一. 变量的作用二. 定义变量2.1 标识符2.2 命名习惯2.3 使用变量2.4 认识bug 三. Debug工具3.1 打断点3.2 Debug调试3.2.1 Debug输出面板分类 四. 认识数据类型总结 目标…

【JAVA集合篇】LinkedList详解

文章目录 简介继承体系源码分析主要属性Node节点构造方法添加元素删除元素 栈总结经典面试题 简介 上篇文章我们详细分析ArrayList的使用及源码:【JAVA集合篇】ArrayList源码详解 ,本章我们来聊聊LinkedList的使用及源码,LinkedList和ArrayL…

Ceph:关于Ceph 集群如何访问的一些笔记

写在前面 准备考试,整理 Ceph 相关笔记博文内容涉及,Ceph 集群四种访问方式介绍及 Demo,Ceph 客户端支持的操作介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意…

科大讯飞星火大模型评测:从职场到日常生活,样样精通

文 | 大力财经 今年最热门的话题当属OpenAI发布ChatGPT 3.5版本,全球用户对此纷纷追捧。在国内领域,百度、阿里巴巴、字节跳动、360、腾讯和科大讯飞等厂商纷纷推出大型模型,加入“百模大战”的竞赛。 大模型在自然语言处理领域可以显著提高…

推荐几款适用的项目管理工具,助力您的项目更高效运作

随着企业规模的扩大和业务范围的增加,中小型企业近年来越来越重视项目管理。Zoho Projects 是一款适用于中小型企业的项目管理工具,可以帮助中小型企业更好地进行项目管理,提高工作效率和协作效果。 一、强大的项目管理能力 Zoho Projects提供…

华为OD机试之AI面板识别

AI面板识别 题目描述 AI识别到面板上有N(1 ≤ N ≤ 100)个指示灯,灯大小一样,任意两个之间无重叠。 由于AI识别误差,每次别到的指示灯位置可能有差异,以4个坐标值描述AI识别的指示灯的大小和位置(左上角…

启智平台使用教程

1.创建项目 填写完需要的信息后,点击“创建项目”即可。 进入到下面这个界面 2.创建调试任务 点击“新建调试任务” 算力集群推荐选择“智算网络集群” 新建项目的时候必须要选择镜像,可以根据自己的需要选择合适的镜像。可以把原镜像的安装包删除&…