JavaScript 中关于 ?? 和 || 的区别和相似性

JavaScript 中关于 ?? 和 || 的区别和相似性

前言

当处理默认值时,??(空值合并运算符)和||(逻辑或运算符)是 JavaScript 中的两个重要工具。尽管它们的目标相似,但它们在实现和使用上存在一些关键区别。本文将详细探讨它们的区别和相似之处。

相似性

  1. 用途:
    • ??|| 都用于在值可能是假值或缺失时提供默认值。
  2. 返回值:
    • 两者都返回一个值,而不是布尔值。这使它们不同于通常的逻辑或布尔运算。

区别

优先级

  • ?? 的优先级比 || 高。这意味着在表达式中同时使用它们时,?? 将首先计算。这可能会导致不同的行为,特别是当你想要设置默认值时。

处理假值

  • ?? 只处理严格等于 nullundefined 的情况。它不会处理其他假值,如 0false、空字符串 '' 等。只有在左侧操作数是 nullundefined 时,?? 才会返回右侧操作数。
  • || 处理更广泛的假值情况,包括 nullundefinedfalse0NaN、空字符串 '' 等。如果左侧操作数是假值,|| 会返回右侧操作数。

返回值

  • ?? 在左侧操作数是 nullundefined 时返回右侧操作数,否则返回左侧操作数。这意味着 ?? 可以用于提供非假值的默认值。
  • || 返回第一个真值,或者如果没有真值,返回最后一个操作数的值。这使得它在需要选择第一个非假值的情况下更有用。

示例

const a = null;
const b = 0;

const result1 = a ?? 'Default';  // result1为 'Default',因为a是null
const result2 = b ?? 'Default';  // result2为 0,因为b不是null

const result3 = a || 'Default';  // result3为 'Default',因为a是null
const result4 = b || 'Default';  // result4为 'Default',因为b是假值

总之,??|| 都可用于提供默认值,但它们在处理假值和优先级方面存在区别。根据你的需求和是否需要严格处理 nullundefined,你可以选择其中之一。这两种运算符是 JavaScript 开发中的有用工具,根据具体情况来选择使用它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值