LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

探秘 JavaScript 的??= 运算符

admin
2024年11月10日 9:31 本文热度 63

掌握 JavaScript 中的 ??= 运算符:优雅处理 null 和 undefined 值

nullish 合并赋值运算符 ??= 是 JavaScript 中相对较新的一个特性。它在 ECMAScript 2021(ES12)中作为“逻辑赋值运算符”提案的一部分被正式引入。

可以将 ??= 看作是变量的智能守护者。它只在当前值为 null 或 undefined 时,才会将新值赋给变量。

// Old way (pre-2021)
if (user.name === null || user.name === undefined) {
  user.name = 'Anonymous';
}

// Or using the nullish coalescing operator (??)
user.name = user.name ?? 'Anonymous';

// New way (ES2021 and later)
user.name ??= 'Anonymous';

当您编写代码如 user.name ??= 'Anonymous' 时,nullish 合并赋值运算符 ??= 首先会检查 user.name 是否为 null 或 undefined

  • 如果 user.name 的值为 null 或 undefined,那么它会被赋值为 'Anonymous'
  • 如果 user.name 已经有一个值,哪怕是空字符串或 0user.name 的值将保持不变,不会进行赋值操作。

为何 ??= 优于其他替代方案

在 ??= 出现之前,我们有几种处理默认值的方法,但每种方法都有其缺点。比较以下这些方法:

// Using if statement - verbose and repetitive
if (user.name === null || user.name === undefined) {
  user.name = 'Anonymous';
}

// Using || operator - catches too much
user.name = user.name || 'Anonymous';  // Replaces '', 0, false too

// Using ternary - gets messy with longer expressions
user.name = user.name === null || user.name === undefined
  ? 'Anonymous'
  : user.name;

// Using ??= - clean and precise
user.name ??= 'Anonymous';

??= 运算符为我们提供了前所未有的精确控制。它仅在我们确实遇到 null 或 undefined 时才会触发赋值,这使得它非常适合那些0''或 false 被视为有效数据的场景:

let score = 0;
score ??= 100;    // Keeps 0

let tag = '';
tag ??= 'default'// Keeps empty string

let active = false;
active ??= true;   // Keeps false

这种精确性有助于避免在使用更宽泛的检查时可能引发的错误。在构建用户界面或处理表单数据时,通常需要保留诸如0''或 false 这样的假值,而不是用默认值将它们覆盖。


原文地址:https://www.trevorlasn.com/blog/javascript-nullish-coalescing-assignment-operator


该文章在 2024/11/11 10:24:07 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved