Javascript 简化以下内容:myBoolean!==假的

Javascript 简化以下内容:myBoolean!==假的,javascript,boolean,Javascript,Boolean,我在一次考试中得到了标题中的问题,我发现它令人困惑。这个问题是什么意思?他们希望我们如何回答?据我所知,没有一种方法可以简化: !== false 然而,他们期望的简化(如果有的话)可能只是: true 但是,在某些情况下!==假与真不一样。例如,!==false将允许0、NaN、null等。有关更多详细信息,请参阅注释。这实际上是无法简化的 myBoolean!==false检查myBoolean在类型和值方面是否不等于false 如果不放松一些标准,就无法简化这一点 如果您不关心输入类型

我在一次考试中得到了标题中的问题,我发现它令人困惑。这个问题是什么意思?他们希望我们如何回答?

据我所知,没有一种方法可以简化:

!== false
然而,他们期望的简化(如果有的话)可能只是:

true
但是,在某些情况下!==假与真不一样。例如,!==false将允许0、NaN、null等。有关更多详细信息,请参阅注释。

这实际上是无法简化的

myBoolean!==false
检查
myBoolean
类型和值方面是否不等于
false

如果不放松一些标准,就无法简化这一点

如果您不关心输入类型,只希望从
myBoolean
返回
true
/
false
,则可以将其缩短如下:

!!myBoolean

这会将其强制为布尔值,但对于其他值也会返回
false

如果问题的目的是将其扩展为更简单的检查,而不是更短的检查

typeof myBoolean !== "boolean" || myBoolean != false

这可能是一个答案。

它将检查myBoolean变量的布尔值,在这种情况下,它的数据类型为false,这就是为什么要对这个问题进行向下投票?无法回答?@hgoebl如果有任何问题:如果问题是simplify myBoolean!==错,我有点不知所措,我肯定很想知道简化版:-)也就是说,这实际上是不能简化的。这会逐字检查
myBoolean
的类型和值是否不等于
false
。如果不放宽某些条件,就无法简化它。不完全是这样,myBoolean对于所有falsy值都将为false,即0、null、NaN、undefined和false。myBoolean!==虚假将是虚假的,因为只有虚假。对于0、null、NaN和undefined都是正确的。正如我所怀疑的,这些东西的计算方式是复杂的。然而,在原始问题的背景下,这还能简化吗?我真的还不知道:-)我的猜测是,无论是谁提出了这个问题,都没有意识到细节,而是希望简化过程如上所述。这根本不是真的。我认为你说得对。假设这是一个测试中的问题,它实际上不需要一个点:-)除了证明理解检查实际上有两个部分(类型和值)。@hgoebl-我不是简单地尝试,只是试图猜测考试问题在寻找什么。也就是说,正确的答案可能是
myBoolean
,假设设置考试的人说他们遵循某种命名约定,其中变量名myBoolean表示一个始终是布尔值。@RobG true(双关语:-)谢谢!已经更新。