当前位置: 首页 > article >正文

JS的空值合并运算符??与逻辑空赋值??=

空值合并运算符(??)

空值合并运算符??)是一个逻辑运算符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

与逻辑或运算符(||)不同,逻辑或运算符会在左侧操作数为假值时返回右侧操作数。也就是说,如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。比如为假值(例如,'' 或 0)时。见下面的例子。

const foo = null ?? 'default string';
console.log(foo);
// Expected output: "default string"

const baz = 0 ?? 42;
console.log(baz);
// Expected output: 0

不能与 AND 或 OR 运算符共用

将 ?? 直接与 AND(&&)和 OR(||)运算符组合使用是不可取的。(译者注:应当是因为空值合并运算符和其他逻辑运算符之间的运算优先级/运算顺序是未定义的)这种情况下会抛出 SyntaxError 。

null || undefined ?? "foo"; // 抛出 SyntaxError
true || undefined ?? "foo"; // 抛出 SyntaxError

但是,如果使用括号来显式表明运算优先级,是没有问题的:

(null || undefined) ?? "foo"; // 返回 "foo"

与可选链式运算符(?.)的关系

空值合并运算符针对 undefined 与 null 这两个值,可选链式运算符(?.) 也是如此。在这访问属性可能为 undefined 与 null 的对象时,可选链式运算符非常有用。

逻辑空赋值(??=)

逻辑空赋值运算符(x ??= y)仅在 x 是空值(null 或 undefined)时对其赋值。

const a = { duration: 50 };

a.duration ??= 10;
console.log(a.duration);
// Expected output: 50

a.speed ??= 25;
console.log(a.speed);
// Expected output: 25


http://www.kler.cn/a/156228.html

相关文章:

  • Mit6.S081-实验环境搭建
  • 【C++】类与对象的基础概念
  • Java项目实战II基于微信小程序的个人行政复议在线预约系统微信小程序(开发文档+数据库+源码)
  • javascript 函数【知识点整理】
  • 前端 JS面向对象 原型 prototype
  • 由播客转向个人定制的音频频道(1)平台搭建
  • 贝叶斯分类器(Bayesian Classifier)
  • 极智芯 | 解读国产AI算力 璧仞产品矩阵
  • 基于大语言模型的垂直领域知识问答系统流程学习
  • 【【ZYNQ-自定义IP核-IP核封装于接口定义实验】】
  • [Golang] 高频次和高并发下的随机数重复问题的解决方案
  • 35、AD模数转换DA数模转换
  • geemap学习笔记019:监督分类与精度验证(上)
  • 组网技术-交换机
  • 【线下赛游记】2023 ICPC合肥区域赛 游记
  • 你不得不知道的工业镜头使用中的常见问题
  • 2023年11月个人工作生活总结
  • 什么是事务?事务的特性是什么?
  • 《python每天一小段》--(1)与GPT-3.5-turbo 模型进行对话
  • Leetcode1094. 拼车
  • 泊车功能专题介绍 ———— 记忆泊车评价规程(征求意见稿)
  • 某60区块链安全之Create2实战二学习记录
  • CRM在设备制造行业的应用,优化资源配置
  • 字符串冲刺题
  • 【STM32】STM32学习笔记-STM32简介(02)
  • Elasticsearch SQL插件调研与问题整理