JavaScript 中 && 和 || 运算符的返回值与类型转换详解

作者:小满

时间:2026-10-24

浏览:254

本文深入解析 JavaScript 中 && 和 || 运算符的行为机制。不同于其他语言仅返回布尔值,JS 逻辑运算符会返回操作数本身的值。文章详细列举了当操作数为 Boolean、Object、null、NaN 和 undefined 时,&& 和 || 的具体返回规则,并通过代码示例展示了短路求值在实际开发中的应用与注意事项。

文章目录

JavaScript 中 && 和 || 运算符的返回值与类型转换详解

常规语境下的 && 和 || 运算较为直观,此处不作赘述。为便于后续讨论,预设两个对象如下。

代码定义如下:

 
var alice = {
name: "alice",
toString: function () {
return this.name;
} 
} 
var smith = {
name: "smith",
toString: function () {
return this.name;
} 
} 

在 JavaScript 中,&& 运算符不仅适用于 boolean 类型,其返回值也不仅限于 Boolean 类型。

若首个操作数为 Boolean 类型且值为 false,则直接返回 false。


若首个操作数为 Boolean 类型且值为 true,而另一个操作数为 object 类型,则返回该 object 对象。


若两个操作数均为 object 类型,则返回第二个对象。


若任一操作数为 null,则返回 null。


若任一操作数为 NaN,则返回 NaN。


若任一操作数为 undefined,则返回 undefined。




alert(false && alice); // 输出 false


alert(true && alice); // 输出 alice



alert(alice && smith); // 输出 smith


alert(smith && alice); // 输出 alice



alert(null && alice); // 输出 null


alert(NaN && alice); // 输出 NaN


alert(undefined && alice); // 输出 undefined


alert(alice && undefined); // 输出 undefined



对于 || 运算符,其作用范围同样不限于 Boolean 类型,且返回值也不仅限于布尔结果。


实际上,null、undefined 和 NaN 在逻辑判断中均被视为 false,而对象被视为 true。



若首个操作数为 Boolean 类型且值为 true,则直接返回 true。


若首个操作数为 Boolean 类型且值为 false,而第二个操作数为 object,则返回该 object 对象。


若两个操作数均为 object 类型,则返回第一个对象。


若两个操作数均为 null,则返回 null。


若两个操作数均为 NaN,则返回 NaN。


若两个操作数均为 undefined,则返回 undefined。


alert(false || alice); // 输出 alice

alert(true || alice); // 输出 true

alert(alice || smith); // 输出 alice

alert(smith || alice); // 输出 smith

alert(null || alice); // 输出 alice

alert(alice || null); // 输出 alice

alert(null || null); // 输出 null

alert(NaN || alice); // 输出 alice

alert(alice || NaN); // 输出 alice

alert(NaN || NaN); // 输出 NaN

alert(undefined || alice); // 输出 alice

alert(alice || undefined); // 输出 alice

alert(undefined || undefined); // 输出 undefined

为避免理解过于复杂,建议参考相关说明。a && b 的逻辑是:将 a, b 转换为 Boolean 类型执行逻辑与,若为 true 则返回 b,若为 false 则返回 a。a || b 的逻辑是:将 a, b 转换为 Boolean 类型执行逻辑或,若为 true 则返回 a,若为 false 则返回 b。类型转换规则如下:对象视为 true;非零数字视为 true;非空字符串视为 true;其他情况视为 false。可参考相关文章:js 与或运算符 || && 妙用、js利用与或运算符优先级实现if else条件判断表达式、javascript &&和||运算法的另类使用技巧。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章