我确信Javascript中的任何逻辑表达式都将返回布尔值,但是该表达式返回数字0而不是布尔值:
0 && true
> 0
为什么呢?在这种情况下,如何在Javascript中处理逻辑表达式以防止将来出现这种错误?
背景故事-我对jQuery中的以下语句感到困惑:
$('.something').toggle(0 && true);
它不会切换元素,因为返回的是“ 0”,而不是布尔值!
也许有一些聪明的原因,但不能说我喜欢它。
有关&&
操作员的文档说:
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] 删除。
我来说两句