为什么 `true ||1 === 1/3` returns 在 JavaScript 中为真?

Why does `true ||1 === 1/3` returns true in JavaScript?

我知道===运算符是用来判断它的两个操作数是否相等和相同的。也就是说,如果左侧操作数为1,则右侧操作数必须为1,才能返回true。但我不明白为什么 javascript returns 对于这个计算是正确的。

true || 1 === 1/3;

//true;

我不明白这个结果在 JavaScript 中怎么会是真的。

||意思是或。 'True or false' 始终计算为真。

1 === 1/3false

||OR

所以你的:true || 1 === 1/3; -> truefalsetrue

您的代码归结为:

true || 1 === 1/3 (false)

true || false

因为布尔运算符 || 将 return 如果任一条件为真,则结果为真。

永远不会检查 === 操作。 true.

的陈述为真

另请参阅 this 关于如何计算 if 语句的问答。

I know that === operator used to determine whether its both operands are equal and identical or not

is the "true" and "1/3" are equal and identical?

从问题和评论来看,您似乎错误地认为该表达式的意思是

(true || 1) === 1/3;

true1/3 确实 不是 相等且相同 因此预期结果将是错误的。但事实并非如此,因为 ||===lower precedence。所以它被解析成这样:true || (1 === 1/3);.

Javascript(以及大多数其他类 C 语言)中的逻辑表达式是 short-circuited,因此在确定结果后,将不会计算剩余的表达式。这意味着最终结果将是 true