JavaScript 逻辑或与相等操作符详解

作者:闭包旅人

时间:2026-10-28

浏览:160

本文详细解析 JavaScript 中逻辑或(||)与相等操作符(==)及全等操作符(===)的行为机制。逻辑或返回首个真值或特定类型的操作数;相等操作符进行隐式类型转换,而全等操作符要求值与类型均一致,NaN 比较特殊。

文章目录

逻辑或操作符行为

逻辑或(||)

变量 result 赋值为 true || false; 逻辑或运算与逻辑与运算类似,若操作数非布尔值,结果未必为布尔值;其遵循以下规则: □ 若首个操作数为对象,则直接返回该对象。

□ 若首个操作数计算结果为 false,则返回第二个操作数。

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

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

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

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

相等与全等操作符差异

“===”与“==”的区别

相等操作符(==)

相等操作符会对操作数值进行隐式类型转换后再进行比较:

若任一操作数为布尔值,则在比较前将其转换为数值。 若一个操作数为字符串,另一个为数值,则通过 Number() 函数将字符串转换为数值。 若一个操作数为对象,另一个不是,则调用对象的 valueOf() 方法,并按前述规则比较所得结果。 null 与 undefined 视为相等。 若任一操作数为 NaN,则相等比较返回 false。 若两个操作数均为对象,则比较它们是否指向同一对象。若指向同一对象,相等操作符返回 true,否则返回 false。 具体说明如下: 首先说明 ===(严格相等),规则如下: 1、若类型不同,则[不相等]。 2、若两者均为数值且值相同,则[相等];(例外情况)若其中至少一个为 NaN,则[不相等]。(判断 NaN 仅能使用 isNaN())。 3、若两者均为字符串,且逐字符完全一致,则[相等];否则[不相等]。 4、若两者均为 true 或均为 false,则[相等]。 5、若两者引用同一对象或函数,则[相等];否则[不相等]。 6、若两者均为 null 或均为 undefined,则[相等]。

其次说明 ==(宽松相等),规则如下: 1、若两个值类型相同,执行 === 比较。 2、若两个值类型不同,它们可能相等。需按以下规则进行类型转换后比较: a、若一个为 null,另一个为 undefined,则[相等]。 b、若一个为字符串,另一个为数值,需将字符串转换为数值后再比较。 c、若任一值为 true,将其转换为 1 后比较;若任一值为 false,将其转换为 0 后比较。 d、若一个为对象,另一个为数值或字符串,需将对象转换为基本类型值后再比较。对象转换为基本类型时,通常调用 toString 或 valueOf 方法。JS 核心内置类优先尝试 valueOf 后尝试 toString;例外的是 Date 对象,其使用 toString 转换。非 JS 核心对象的转换逻辑较为复杂,此处不作详述。 e、其他任何组合,均[不相等]。

表达式 值 表达式 值 null==undefined true true==1 true "NaN" ==NaN false $null==0 false false==0 true NaN!=NaN true 简而言之,“==”仅要求值相等,“===”要求值和类型均相等。

资料来源:《JavaScript 高级程序设计》,整理后后续更新逻辑或操作符行为

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章