|| 和 ?? 的使用区别

91 阅读1分钟

在 JavaScript 和 TypeScript 中,||?? 都是用于处理变量值为假值时的情况,但它们之间存在一些区别:

  1. || 运算符

    • || 运算符用于逻辑或操作。它在两个操作数中,返回第一个被解释为真值的操作数。
    • 如果第一个操作数被解释为真值,则返回第一个操作数,否则返回第二个操作数。
    • || 运算中,假值(falsy values)包括 false0''(空字符串)、nullundefinedNaN
    • || 运算符经常用于提供默认值的设定,例如 let result = a || b;,意思是如果 a 是假值,那么 result 将被赋值为 b
  2. ?? 运算符

    • ?? 运算符是空值合并运算符(Nullish Coalescing Operator)。
    • 它用于在变量为 nullundefined 时,提供一个默认值。
    • 当左侧操作数为 nullundefined 时,返回右侧操作数,否则返回左侧操作数。
    • || 不同,?? 运算符只对 nullundefined 进行空值检查,不会对其他假值进行检查。
    • ?? 运算符通常用于提供更严格的默认值设置,例如 let result = a ?? b;,如果 anullundefined,那么 result 将被赋值为 b

综上所述,|| 运算符和 ?? 运算符在某些方面具有相似的功能,但它们处理假值和提供默认值的方式有所不同。在选择使用时,应根据具体的业务需求和数据类型来决定。