JavaScript基础语法之 || 和 ?? 的踩坑记录

时间:2023-05-24 11:13:46 来源: 博客园


(资料图片仅供参考)

在前端开发过程中,我们在设置默认值的时候,会经常用到 || 和 ?? , 但是这两者有什么区别呢?分别在什么场景下面使用呢,会有哪些坑呢,今天我们来梳理下呢。

|| 的语法作用

console.log(null || 1)                //输出 1console.log(undefined || 1)       //输出1     console.log(0 || 1)                   //输出1 console.log("" || 1)                   //输出1 console.log(1 || null)               //输出1 console.log(undefined || "")      //输出""console.log(undefined || 0)      //输出0console.log(undefined || null)   //输出nullconsole.log(null || undefined)   //输出undefinedconsole.log("" || undefined)   //输出undefinedconsole.log(0 || undefined)   //输出undefined

在这里可以看出,使用 || 的时候,当第一个值为非0非null非""非undefined的时候,优先取第一个值,而当第一个值是0或""或null或undefined的时候,则优先取第二个参数的值。

?? 的语法作用

console.log(null ?? 1)                //输出 1console.log(undefined ?? 1)       //输出1     console.log(0 ?? 1)                   //输出0 console.log("" ?? 1)                   //输出"" console.log(1 ?? null)               //输出1 console.log(undefined ?? "")      //输出""console.log(undefined ?? 0)      //输出0console.log(undefined ?? null)   //输出nullconsole.log(null ?? undefined)   //输出undefinedconsole.log("" ?? undefined)   //输出""console.log(0 ?? undefined)   //输出0

在这里可以看出,使用 ?? 的时候,当第一个值为非null非undefined的时候,优先取第一个值,而当第一个值是null或undefined的时候,则优先取第二个参数的值。

|| 和 ?? 的对比总结

对比 || 和 ??后,发现 || 的处理是针对于0或空或null或undefined都去获取后面的默认值,而??则是针对于null或undefined的时候,去获取后面的默认值,则对应的场景如下:

  1. 当一个变量值可能为空0或者""的时候,希望最后展示的是默认值的时候,则只能使用 || 来处理
  2. 当一个变量值可能为null或undefined的时候,希望最后展示的是默认值的时候,则优先使用 ?? 来处理
标签:

相关文章

社会面清零后第十天,三问吉林省复工复产怎样了

新华社长春4月23日电 题:社会面清零后第十天,三问吉林省复工复产怎样了 新华社记者段续、张建、赵丹丹...

来源:2022-04-24

青海海北州门源县发生3.9级地震 震源深度10千米

4月23日电 据国家地震台网官方微博消息,中国地震台网正式测定:04月23日22时07分在青海海北州门源县(...

来源:2022-04-24

山西太原万柏林区报告1例无症状感染者 公布行程轨迹

(抗击新冠肺炎)山西太原万柏林区报告1例无症状感染者 公布行程轨迹 太原4月23日电 (记者 李新锁)山西...

来源:2022-04-24

上海战疫:从严从重从快查处食品安全违法行为

(抗击新冠肺炎)上海战疫:从严从重从快查处食品安全违法行为 上海4月23日电 (记者 许婧)近日,上海出现...

来源:2022-04-24

杭州本轮疫情已发现98例阳性感染者 有进一步扩散可能

杭州4月23日电(张煜欢 崔倩娴)23日,记者从杭州市新冠肺炎疫情防控工作新闻发布会上获悉,截至23日18时...

来源:2022-04-24

精彩推送

X 关闭

X 关闭