JavaScript逻辑运算符核心是短路求值与真值/假值规则:&&全真才执行,||一真即执行,!用于否定或布尔转换,混用时需注意&&优先级高于||,复杂逻辑应加括号。

JavaScript 中用 &&(逻辑与)、||(逻辑或)、!(逻辑非)组合多个条件,核心是理解“短路求值”和“真值/假值”规则,而不是只看 true/false。
用 && 连接多个条件:全部为真才执行
当多个条件用 && 连接时,JavaScript 从左到右依次判断,遇到第一个“假值”立即停止(短路),并返回该值;如果全部为“真值”,则返回最后一个表达式的值。
- 常见假值:false、0、''(空字符串)、null、undefined、NaN
- 其他值(包括 {}、[]、'false'、'0')都算真值
- 实际写 if 判断时,通常关心整体真假结果,不用刻意记返回值
例如:
if (age >= 18 && hasId && isChinese) { /* 入职流程 */ }只有三个条件全为真,代码块才会执行。
用 || 连接多个条件:任一为真就执行
|| 同样短路:从左到右,遇到第一个“真值”就停止,并返回它;如果全为假值,则返回最后一个表达式的值。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 常用于提供默认值:const name = userInput || '匿名用户'
- 也可用于条件分支简化:if (type === 'admin' || type === 'editor' || type === 'moderator') { ... }
- 注意:不要混用类型不一致的比较,比如 0 || 'hello' 返回 0(假值),但可能不是你想要的“兜底”效果
混用 && 和 || 时注意优先级
&& 优先级高于 ||,相当于 a && b || c && d 等价于 (a && b) || (c && d)。
- 复杂逻辑建议加括号明确意图,提升可读性
- 例如:if ((isLogin && role === 'user') || (isDemoMode && !isBlocked)) { ... }
- 避免写成 isLogin && role === 'user' || isDemoMode && !isBlocked —— 容易误读或出错
用 ! 配合其他运算符做否定和转换
! 将操作数转为布尔值后取反;!! 常用来安全地转布尔值。
- if (!isLoading && !error) { renderData() } —— 双重否定更清晰
- const isValid = !!(value && value.trim()) —— 排除 null/undefined/空格字符串
- 注意:![] 是 false,!{} 也是 false(因为对象是真值,取反为 false),别凭直觉猜

















