是否有理由在JavaScript条件中编写“if(myBoolean == true)”?

时间:2012-11-06 11:35:20

标签: javascript if-statement boolean type-conversion

许多初学程序员编写if (myBoolean == true)而不是if (myBoolean)之类的东西,因为他们还没有掌握条件不需要包含比较,只需要一个布尔值。当我在twitter上注意到这一点时,有人建议我在JavaScript中可能有充分的理由这样做。在那儿?我们都知道JavaScript类型很奇怪,但谷歌在这个特定点上没有答案。

更新:似乎没有区别,但是if (myBoolean === true)会有所不同。所以澄清一个问题 - 如果(myBoolean === true)或if(myBoolean),JavaScript中的最佳实践是什么。在现实场景中你会检查=== true某些你不知道是布尔值的东西吗?请在此后续问题中回答:Why is it good practice to use if (myBoolean === true) in JavaScript?

2 个答案:

答案 0 :(得分:7)

没有

由于您使用的是non-strict equality operator,因此完全没有区别:

if (myBoolean == true)

if (myBoolean)

如果您使用严格相等运算符===并且myBoolean实际上不是布尔值,则会有所不同。

答案 1 :(得分:2)

如果要检查真实的布尔值(true / false)而不仅仅是具有真实性的东西,那么你永远不应该浪费时间比较为真或者是假的。

您的变量应以布尔方式命名,如isFinishedhasMoreRecords,以便可以读取语句:

if (!finished) ...
if (moreRecordsLeft) ...
if (userHasLostTheirSanity) ...

等等。

将布尔值与true / false进行比较的问题在于它只生成另一个布尔值,并且没有明确的停止位置:

if (!((userIsMad == true) == true) = false) ...