为什么 `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/3
是 false
||
是 OR
所以你的:true || 1 === 1/3;
->
true
或 false
是 true
您的代码归结为:
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;
true
和 1/3
确实 不是 相等且相同 因此预期结果将是错误的。但事实并非如此,因为 ||
比 ===
有 lower precedence。所以它被解析成这样:true || (1 === 1/3);
.
Javascript(以及大多数其他类 C 语言)中的逻辑表达式是 short-circuited,因此在确定结果后,将不会计算剩余的表达式。这意味着最终结果将是 true
我知道===
运算符是用来判断它的两个操作数是否相等和相同的。也就是说,如果左侧操作数为1,则右侧操作数必须为1,才能返回true
。但我不明白为什么 javascript returns 对于这个计算是正确的。
true || 1 === 1/3;
//true;
我不明白这个结果在 JavaScript 中怎么会是真的。
||意思是或。 'True or false' 始终计算为真。
1 === 1/3
是 false
||
是 OR
所以你的:true || 1 === 1/3;
->
true
或 false
是 true
您的代码归结为:
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;
true
和 1/3
确实 不是 相等且相同 因此预期结果将是错误的。但事实并非如此,因为 ||
比 ===
有 lower precedence。所以它被解析成这样:true || (1 === 1/3);
.
Javascript(以及大多数其他类 C 语言)中的逻辑表达式是 short-circuited,因此在确定结果后,将不会计算剩余的表达式。这意味着最终结果将是 true