ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

谈谈 JavaScript 中的空值合并操作符 Nullish coalescing operator

2022-01-12 14:03:32  阅读:160  来源: 互联网

标签:返回 空值 Nullish undefined JavaScript 运算符 参数 operator null


空值合并运算符 (??) 是一个逻辑运算符,仅当左侧(第一个参数)为空或未定义时才返回运算符(第二个参数)的右侧。 在所有其他情况下,它返回第一个参数。

下列这两行测试代码,分别输出 Hello 和 132

因此,正如您在上面的示例中看到的那样,返回 Hello 是因为 undefined 位于运算符的左侧。 如果 null 代替 undefined,结果将是相同的。 在第二个示例中,如果第一个参数中存在除 null 或 undefined 以外的任何内容,则操作员不会检查第二个参数,而是会立即打印第一个值。

在空值合并操作符被加入 ECMAScript 2020 之前,每当我们想为变量赋予默认值时,我们使用 OR (||) 逻辑运算符。 但是使用 OR 运算符有一些潜在的问题: || 运算符并不区分 false、0、“” 和 null/undefined。 所有这些都被 OR 运算符判定为返回 false,所以如果它遇到任何这些作为第一个参数,那么我们将得到第二个参数作为结果,这使得 OR 运算符的可信度降低。

下图显示了 ?? 和 || 这两个操作符的差异:

遇到 0,|| 会返回右边的操作数 100,而因为 0 既不是 undefined 也不是 null,因而 0 ?? 100 会返回 0.

关于 ?? 的优先级问题

?? 运算符仅比 MDN 文档中给出的优先级表中的 OR 运算符低一位。 这意味着它将在 = 和三元运算符之前以及 + 和 * 等运算符之后进行评估。

为了提高代码可读性,在使用 ?? 时请添加小括号:

SAP Spartacus 的实现中也有大量 ?? 的用法,如下图所示:

更多Jerry的原创文章,尽在:"汪子熙":

标签:返回,空值,Nullish,undefined,JavaScript,运算符,参数,operator,null
来源: https://www.cnblogs.com/sap-jerry/p/15792321.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有