首页 > 其他分享 >空值合并运算符 '??' 与 || 比较

空值合并运算符 '??' 与 || 比较

时间:2024-01-31 19:45:52浏览次数:32  
标签:空值 合并 height 运算符 let 100 null

空值合并运算符 '??' 与 || 比较

https://zh.javascript.info/nullish-coalescing-operator

或运算符 || 可以以与 ?? 运算符相同的方式使用。

`
let firstName = null;
let lastName = null;
let nickName = "Supercoder";

// 显示第一个真值:
alert(firstName || lastName || nickName || "Anonymous"); // Supercoder
`

纵观 JavaScript 发展史,或 || 运算符先于 ?? 出现。它自 JavaScript 诞生就存在了,因此开发者长期将其用于这种目的。

另一方面,空值合并运算符 ?? 是最近才被添加到 JavaScript 中的,它的出现是因为人们对 || 不太满意。

它们之间重要的区别是:

|| 返回第一个 真 值。
?? 返回第一个 已定义的 值。
换句话说,|| 无法区分 false、0、空字符串 "" 和 null/undefined。它们都一样 —— 假值(falsy values)。如果其中任何一个是 || 的第一个参数,那么我们将得到第二个参数作为结果。

不过在实际中,我们可能只想在变量的值为 null/undefined 时使用默认值。也就是说,当该值确实未知或未被设置时。

例如,考虑下面这种情况:
`
let height = 0;

alert(height || 100); // 100
alert(height ?? 100); // 0
`
height || 100 首先会检查 height 是否为一个假值,它是 0,确实是假值。
所以,|| 运算的结果为第二个参数,100。
height ?? 100 首先会检查 height 是否为 null/undefined,发现它不是。
所以,结果为 height 的原始值,0。
实际上,高度 0 通常是一个有效值,它不应该被替换为默认值。所以 ?? 运算得到的是正确的结果。

总结

空值合并运算符 ?? 提供了一种从列表中选择第一个“已定义的”值的简便方式。

它被用于为变量分配默认值:

// 当 height 的值为 null 或 undefined 时,将 height 的值设置为 100
height = height ?? 100;
?? 运算符的优先级非常低,仅略高于 ? 和 =,因此在表达式中使用它时请考虑添加括号。

如果没有明确添加括号,不能将其与 || 或 && 一起使用。

标签:空值,合并,height,运算符,let,100,null
From: https://www.cnblogs.com/longmo666/p/17999955

相关文章

  • SQL Server MERGE(合并)语句
    来源 https://www.cnblogs.com/yigegaozhongsheng/p/11941734.html如何使用SQLServerMERGE语句基于与另一个表匹配的值来更新表中的数据。  SQLServer MERGE语句 假设有两个表,分别称为源表和目标表,并且需要根据与源表匹配的值来更新目标表。有以下三种情况: 源表......
  • 代码随想录 day36 无重叠区间 划分字母区间 合并区间
    无重叠区间这里的思路是找到有几个非重叠区间然后总数减去非重叠区间就是剩下的重叠区间数首先排好序按左或者右都可以这里按左排好然后发现边界不重叠就++边界重叠那么由于左边界优先对齐了所以右边界更新作为一个新的整体区间和下一个区间比较划分字母区间......
  • 双重按位非运算符 ~~ 对数字取整
    介绍按位非运算符(~)将操作数的位反转。它将操作数转化为32位的有符号整型。也就是可以对数字进行取整操作(保留整数部分,舍弃小数部分)。~-2//1~-2.222//1并且按位非运算时,任何数字 x(已被转化为32位有符号整型) 的运算结果都是 -(x+1)。那么双重按位非(~~)对数字的运......
  • 从C向C++——运算符重载
    本文的主要知识点是C++中的运算符重载。1.运算符重载所谓重载,就是赋予新的含义。函数重载(FunctionOverloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。**运算符重载(OperatorOverloading)**也是一个道理,同一个运算符可以有不同的功能。实际上,我们已经在不知不觉中......
  • C#中问号(?)运算符的历代新增用法
    本文是B站up主十月的寒流的相应视频的学习笔记,可以直接访问该视频获取更详细的讲解:C#中问号(?)运算符的历代新增用法C#1.0三目运算符stringres=x>5?"goood":"no"C#2.0可为空的值类型(NullableValueTypes)int?x=null;上述代码本质上是Nullable<int>x=nul......
  • [office] excel表格sheet如何合并
    在进行excel操作的时候,我们经常遇到多个sheet表合并的问题,这些表的字段是一致的,为了能够更好的分析和处理,需要把这些表合并成一个。下面让小编为你带来excel表格合并sheet的方法。excel表格sheet合并步骤如下:表一:需要汇总的各表表二:汇总地段列表如图所示,需要将......
  • Power BI - 5分钟学习创建合并列
    每天5分钟,今天介绍PowerBI如何创建合并列什么是合并列顾名思义合并列就是把两个列信息拼接到一个列中显示。工作中经常会有类似需求,把产品编码和产品名称放到一个筛选器或者单元格中展示。那我们在PowerBI中应该如何进行类似创建合并列的操作呢?首先导入样例产品表;(Excel数据......
  • 【干货】一文掌握JavaScript检查对象空值的N种技巧!
    在开发JavaScript应用程序时,经常需要检查对象是否为空。这是因为在处理和操作对象数据时,我们需要确保对象包含有效的值或属性。以下是一些常见情况,我们需要检查JavaScript对象是否为空:防止空引用错误:当我们尝试访问或使用一个空对象时,可能会导致空引用错误(如TypeError:Cann......
  • 【干货】一文掌握JavaScript检查对象空值的N种技巧!
    在开发JavaScript应用程序时,经常需要检查对象是否为空。这是因为在处理和操作对象数据时,我们需要确保对象包含有效的值或属性。以下是一些常见情况,我们需要检查JavaScript对象是否为空:防止空引用错误:当我们尝试访问或使用一个空对象时,可能会导致空引用错误(如TypeError:Can......
  • Hive参数调优:如何控制reduce个数与参数调优(合并小文件和拆分大文件)
    reduce的个数一般最后决定了输出文件的个数,如果想多输出文件的个数(这样文件变小,但有可能程序变慢),那么可以人为增加reduce个数。如果想减少文件个数,也可以手动较少reduce个数(同样可能程序变慢)。但实际开发中,reduce的个数一般通过程序自动推定,而不人为干涉,因为人为控制的话,如果使用......