为什么“ 0 && true”在JavaScript中返回0而不是布尔值?

工具

我确信Javascript中的任何逻辑表达式都将返回布尔值,但是该表达式返回数字0而不是布尔值:

0 && true
> 0

为什么呢?在这种情况下,如何在Javascript中处理逻辑表达式以防止将来出现这种错误?

背景故事-我对jQuery中的以下语句感到困惑:

$('.something').toggle(0 && true);

它不会切换元素,因为返回的是“ 0”,而不是布尔值!

也许有一些聪明的原因,但不能说我喜欢它。

马克西姆·切拉米(Maxime Cheramy)

有关&&操作员的文档说:

expr1 && expr2:返回expr1是否可以转换为false; 否则,返回expr2

这就是为什么返回第一个值的原因: 0

来源:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Description

结果false您所期望的(布尔值),但是结果值的布尔值也是虚假的。这意味着您可以在条件(if)中使用它并具有预期的行为。

如果需要将其存储在变量中并且更喜欢具有布尔值,则可以对其进行转换。可以使用双重否定来完成:!!

!!(0 && true)

或使用Boolean

Boolean(0 && true)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章