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

时间:2017-11-17 03:04:54

标签: javascript conditional-operator

在条件语句内部,任何逻辑操作都将计算为布尔值,该值确定是否执行条件块。如下面的语句将确定IF语句将执行与否

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

但是当分配给变量时,相同的条件语句将计算为Number值。考虑这个:

var x = null || 1 // x will become 1

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

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

2 个答案:

答案 0 :(得分:3)

它们都会产生同样的结果。但是,区别在于if语句将值解析为布尔值:返回的1被解析为布尔值。

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

if(null || 1){}只评估为if(1){},而if(true){}的评估结果为1,因为if是真实的。

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

来自mozzila.org

  

在JavaScript中,truthy值是在布尔上下文中计算时被视为true的值。所有值都是真实的,除非它们被定义为假(即0""nullundefinedNaN和{{1}除外})。 JavaScript在布尔上下文中使用类型强制

答案 1 :(得分:2)

在JavaScript中,1是" truthy",这就是输入if语句的原因。基本上,(null || 1)始终评估为1,但如果被强制,我们会说true而不是false