当前位置: 首页 > news >正文

JavaScript中??、、||、?.运算的区别

在 JavaScript 中,??、&&、||、?. 是不同的运算符,用途和行为差异较大,具体区别如下:

1. ??(空值合并运算符)

作用:判断左侧操作数是否为 null 或 undefined,如果是则返回右侧操作数,否则返回左侧操作数。

特点:仅对 null/undefined 生效,对其他 “假值”(如 0、''、false)不生效。

console.log(null ?? '默认值'); // '默认值'(左侧为null)
console.log(undefined ?? '默认值'); // '默认值'(左侧为undefined)
console.log(0 ?? '默认值'); // 0(左侧是0,非null/undefined)
console.log('' ?? '默认值'); // ''(左侧是空字符串,非null/undefined)

2. &&(逻辑与运算符)

作用:对操作数进行 “逻辑与” 判断,返回第一个 “假值”(如果有),否则返回最后一个 “真值”。

特点:短路逻辑 —— 如果左侧为 “假值”,则直接返回左侧,不再执行右侧;只有左侧为 “真值” 时,才返回右侧。

“假值” 范围:false、0、''、null、undefined、NaN。

console.log(true && '右侧值'); // '右侧值'(左侧为真,返回右侧)
console.log(0 && '右侧值'); // 0(左侧为假,返回左侧)
console.log('a' && 'b' && 'c'); // 'c'(所有为真,返回最后一个)

3. ||(逻辑或运算符)

作用:对操作数进行 “逻辑或” 判断,返回第一个 “真值”(如果有),否则返回最后一个 “假值”。

特点:短路逻辑 —— 如果左侧为 “真值”,则直接返回左侧,不再执行右侧;只有左侧为 “假值” 时,才返回右侧。

console.log(false || '右侧值'); // '右侧值'(左侧为假,返回右侧)
console.log('左侧值' || '右侧值'); // '左侧值'(左侧为真,返回左侧)
console.log(0 || '' || null || '最后一个'); // '最后一个'(前面都是假,返回最后一个真)

4. ?.(可选链运算符)

作用:安全地访问嵌套对象的属性,避免因中间属性为 null/undefined 而抛出 Cannot read property 'x' of undefined 错误。

特点:如果左侧操作数为 null/undefined,则表达式直接返回 undefined,不再继续访问后续属性。

const obj = { a: { b: 10 } };console.log(obj?.a?.b); // 10(正常访问)
console.log(obj?.c?.d); // undefined(obj.c 不存在,返回undefined,不报错)
console.log(null?.a); // undefined(左侧为null,直接返回undefined)

核心区别总结

运算符作用关键特点适用场景
??处理 null/undefined仅对 null/undefined 生效设置默认值(排除 0/'' 等)
&&逻辑与,取第一个假值或最后真值短路逻辑,左侧假则返回左侧条件执行(如 flag && doSomething()
``逻辑或,取第一个真值或最后假值短路逻辑,左侧真则返回左侧设置默认值(包含 0/'' 等)
?.安全访问嵌套属性避免中间属性不存在导致的错误访问可能不存在的嵌套对象属性
http://www.dtcms.com/a/602164.html

相关文章:

  • 微信公众号网站怎么做上海网站开发报价
  • Python压缩音乐文件大小
  • 用什么软件写网站荷城网站设计
  • 长治哪家公司做网站好怎么做网站教程视频
  • 跟踪导论(三)——滤波的释义位置信息的“观测+修正”
  • 一个电商网站开发周期是多久搜索引擎营销流程是什么?
  • 计算机做网站难吗网站建设费可以走办公费吗
  • 做公众号还是网站建网站哪家划算
  • 从App时代到智能体时代,如何打破“三堵墙”
  • jsp怎么拿到url参数
  • 有机蔬菜:清爽解腻的炖锅搭档
  • 网站的时间对齐应该怎么做wordpress中文评论插件
  • 515ppt网站建设岳麓区专业的建设网站公司
  • mysql第5次作业---hyx
  • LLM的“哥白尼革命”:物理AI与世界模型,AI的下一个战场!
  • VC软件编译C语言 | 详细教程与常见问题解答
  • 高职单招与统招比较及职业发展指南
  • Cursor vs Claude Code:AI编程工具深度对比与选择指南
  • php论坛网站源码下载大型购物网站设计
  • 网站建设标书样本如何修改wordpress登录域名
  • 深圳网站建设联系方式crm客户管理系统论文
  • Python 100例:深入学习与实践指南
  • “系统性”学习高并发路线
  • VL25 输入序列连续的序列检测
  • 如何做条形码网站怎么搞浏览器如何推广自己网站
  • 系统之美—人文行走
  • 用Python和Websockets库构建一个高性能、低延迟的实时消息推送服务
  • 海尔网站建设水平河北廊坊seo网站建设网站优化
  • 小型深圳网站定制开发最专业的网站建设
  • 中山网站优化排名徐州祥云做网站