JavaScript中TRUE和"true",为什么有人会使用字符串而不是布尔值?

5

我看到一些JavaScript代码中人们会写出如下的代码:

var myVar = "true";

//...

if(myVar == "true") {
     //...
}else{
     //...
}

为什么人们不使用TRUE或FALSE?就我所知,布尔类型对于浏览器来说是显而易见的。

还是因为代码质量差...尽量不要这样写。


1
那其实是小写的 truefalse,但你的分析是正确的:最好使用实际的布尔值而不是字符串。 - Frédéric Hamidi
1
var myVar = "false"; if (myVar) alert("O, hai!") 也会显示警告。 - Oleg V. Volkov
3个回答

7

这只是糟糕的代码,请尽量不要以这种方式编写。

这种代码对于可维护性来说非常可怕。既有使用 ==(而不是 ===),也有将 true 作为字符串的情况。

PS:此外,"true" == true // false。对于使用 === 的论点,这仅仅是因为 true == 1 // true,还有很多其他看起来相似的东西。


4

除非你有某种原因需要得到包含true的字符串,否则你不应该这样做:)。即使在这种情况下,使用严格相等运算符===)也是正确的选择。

在你所展示的代码示例中,这只是一种可怕的编码方式。


2
在这种情况下,您应该使用严格相等来让任何阅读代码的人清楚明白。 - Matthew

1

就像你所说的那样,这只是糟糕的代码。

“真正”的开发人员永远不会写if (condition == true),而只会写if (condition)

也可以写成if (true == condition)。这被称为Yoda风格,旨在防止如果您错误地写入=而不是==时意外分配变量。


3
如果您在谈论“真正的”开发人员时,当测试为true时提到===是值得的 :)。 - kapa
1
同意。在测试失败时,我特别喜欢在 PHP 中这样做。 - Cyrille

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接