news 2026/6/23 2:47:05

JavaScript 中 || 和 操作符的返回值是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript 中 || 和 操作符的返回值是什么?

在 JavaScript 中,||(逻辑或)和&&(逻辑与)操作符不总是返回布尔值,而是返回参与运算的其中一个操作数的原始值

1.逻辑或||(Logical OR)

规则:返回第一个 truthy 值;如果所有值都是 falsy,则返回最后一个值

// 短路求值:找到第一个 truthy 值就立即返回"hello"||"world"// "hello"(第一个值就是 truthy)0||"default"// "default"(0 是 falsy,返回第二个)null||undefined||42// 42(前两个都是 falsy,返回最后一个)""||false||"ok"// "ok"// 所有值都是 falsy0||""||null// null(返回最后一个)false||undefined// undefined

常用场景:提供默认值

constname=userInput||"默认名称";constcount=config.count||10;

2.逻辑与&&(Logical AND)

规则:返回第一个 falsy 值;如果所有值都是 truthy,则返回最后一个值

// 短路求值:找到第一个 falsy 值就立即返回true&&false// false"hello"&&"world"// "world"(两个都是 truthy,返回最后一个)0&&"anything"// 0(第一个就是 falsy,立即返回)null&&undefined// null// 所有值都是 truthytrue&&"hello"&&42// 42(返回最后一个)"a"&&"b"&&"c"// "c"

常用场景:条件执行

isLoggedIn&&showDashboard();user&&user.name&&user.name.toUpperCase();

3.短路求值机制

  • ||:如果第一个操作数是 truthy,不再计算第二个操作数
  • &&:如果第一个操作数是 falsy,不再计算第二个操作数
false&&console.log("不会执行")// 不会输出true||console.log("不会执行")// 不会输出

4.与三元运算符对比

// || 相当于value1||value2// 等价于value1?value1:value2// && 相当于value1&&value2// 等价于value1?value2:value1

5.注意事项

  • 返回值是原始值,不是布尔值
  • 利用短路特性可以优化性能或避免错误
  • ES2020 引入了空值合并运算符??,只检查nullundefined,不检查其他 falsy 值:
    0||10// 100??10// 0(0 不是 null/undefined)""||"def"// "def"""??"def"// ""(空字符串不是 null/undefined)

6.实际示例

// 链式调用保护user&&user.profile&&user.profile.avatar;// 默认值设置constconfig={timeout:0,retries:undefined};constfinalTimeout=config.timeout||3000;// 3000(0 是 falsy)constfinalRetries=config.retries??3;// 3(undefined 是 null/undefined)

总结

  • ||返回第一个 truthy 值,或最后一个 falsy 值
  • &&返回第一个 falsy 值,或最后一个 truthy 值
  • 两者都使用短路求值,返回的是操作数的原始值
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 2:41:04

如何构建现代Web应用中的企业级电子表格解决方案

如何构建现代Web应用中的企业级电子表格解决方案 【免费下载链接】fortune-sheet A drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets 项目地址: https://gitcode.com/gh_mirrors/fo/fortune-sheet 在当今数据驱动的商…

作者头像 李华
网站建设 2026/6/23 2:34:24

mimocode的使用

听说小米的token做活动 体现了一下mimocode这个product 这里记录一下mimocode的使用 1.什么是mimocode mimocode本质上是一个一个tui 什么是tui 在我的理解下,就是可以自然语言交互的cmd命令行 我们类比一下命令行交互 linux上面万物都是文件, 所以&…

作者头像 李华
网站建设 2026/6/23 2:34:14

工贸企业全链路数字化横评:四类CRM解决方案五大核心维度对比

摘要在当前工业与工贸类中小企业的数字化转型浪潮中,单一功能的软件已难以满足企业对“降本增效”的极致追求。企业迫切需要一套能够打通获客、生产、履约、复购及供应链协同的全链路数字化体系。本文将选取具有代表性的四类解决方案进行深度横评:以超兔…

作者头像 李华
网站建设 2026/6/23 2:01:54

2026年8月EI学术会议时间表,赶快收藏!覆盖模式识别、土木工程、数据智能处理、能源环境、智能系统、人机交互、互联网金融、机械材料、机器学习、具身智能、区块链、生物医学、计算建模等多领域!...

会议名称 会议时间 地点 2026年深度学习与自动化国际学术会议 (ICDLA 2026) 2026年8月4日 桂林 2026年人工智能与数据智能处理国际学术会议(AIDIP 2026) 2026年8月5日 桂林 2026年智能通信与系统国际学术会议(ICICSys 2026&#xf…

作者头像 李华
网站建设 2026/6/23 1:41:13

日供一卒 6.22

nacos 部署 config 配置文件修改数据库配置建立nacos专用数据库:在 conf 目录下,提供了 MySQL 数据库初始化脚本 nacos-mysql.sql。在bin目录下执行 startup.cmd -m standalone 项目配置 spring.config.import spring:config:import:- optional:classpat…

作者头像 李华