为什么条件或在分配给变量时不计算为布尔值

why conditional or doesn't evaluates to boolean value when assigned to a variable

在条件语句中,任何逻辑运算都将计算为一个布尔值,该值决定是否执行条件块。像下面的语句会判断IF语句是否执行

if(null || 1){} // evaluates to boolean value

但是相同的条件语句在分配给 variable.Consider this:

时将计算为 Number 值
var x = null || 1 // x will become 1

我的另一个问题是 null 和 1 的顺序在这里重要吗?

什么决定条件运算何时变为布尔值或数字?

在JavaScript中,1是"truthy",这就是输入if语句的原因。基本上,(null || 1) 总是计算为 1,但如果强制,我们说它是 true 而不是 false

它们的结果相同。然而,区别在于 if 语句将值解析为布尔值:返回的 1 被解析为布尔值。

> (null || 1)
1
> Boolean(1)
true

if(null || 1){} 简单地计算为 if(1){},后者又计算为 if(true){},因为 1 是真实的。

因此,没有确定性差异,if 语句只是将参数解析为布尔值,而变量定义只是 returns 数字本身。

来自 mozzila.org:

In JavaScript, a truthy value is a value that is considered true when evaluated in a Boolean context. All values are truthy unless they are defined as falsy (i.e., except for false , 0 , "" , null , undefined , and NaN ). JavaScript uses type coercion in Boolean contexts