为什么条件或在分配给变量时不计算为布尔值
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
在条件语句中,任何逻辑运算都将计算为一个布尔值,该值决定是否执行条件块。像下面的语句会判断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
, andNaN
). JavaScript uses type coercion in Boolean contexts