JavaScript中&&和||运算符的短路逻辑与优先级解析

作者:木棉

时间:2026-10-25

浏览:367

本文深入解析JavaScript中&&和||运算符的短路求值机制及其在代码中的实际应用。通过对比a()&&b()与a()||b()的执行逻辑,阐明非布尔值参与运算时的返回值规则。同时详细分析&&高于||的优先级对表达式结果的影响,结合具体代码示例说明如何正确预判运算结果,帮助开发者利用这些特性优化代码逻辑。

文章目录

&&和||运算符的短路逻辑

在jQuery源码中,&&和||运算符的使用频率极高。由于作者并未系统性地深入学习JavaScript,以下仅为个人对这两种运算符用法的初步理解,恳请读者指正。


基于实践的观察,可以得出以下初步结论:



对于表达式 a() && b():若执行 a() 后返回真值(true),则继续执行 b() 并返回 b() 的结果;若 a() 返回假值(false),则整个表达式的结果即为 a() 的值,此时 b() 不会被执行。


对于表达式 a() || b():若执行 a() 后返回真值(true),则整个表达式的结果即为 a() 的值,b() 不会被执行;若 a() 返回假值(false),则继续执行 b() 并返回 b() 的结果。


在运算符优先级方面,&& 的优先级高于 ||。



运算符优先级与代码分析

具体表现如下所示:


  

代码示例


代码如下:

 
alert((1 && 3 || 0) && 4); // 输出结果为 4 ①
alert(1 && 3 || 0 && 4); // 输出结果为 3 ②
alert(0 && 3 || 1 && 4); // 输出结果为 4 ③

对上述代码的执行过程分析如下:


语句①:首先计算 1 && 3,返回 3;接着计算 3 || 0,返回 3;最后计算 3 && 4,返回 4。


语句②:根据优先级,先计算 1 && 3 返回 3,同时计算 0 && 4 返回 0;最后执行 3 || 0,返回 3。


语句③:根据优先级,先计算 0 && 3 返回 0,同时计算 1 && 4 返回 4;最后执行 0 || 4,返回 4。



注意:在JavaScript中,所有非零的整数均被视为真值(true),而 undefined、null 和空字符串 "" 被视为假值(false)。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章