为什么javascript中的'false'真实?

时间:2015-09-22 15:09:30

标签: javascript casting boolean truthiness

据我所知,javascript中的空字符串是假的,javascript中的空字符串是真的。

但是,为什么javascript中有'false' truthy,规范中是否有明确的内容?这是性能问题还是在某些情况下您希望字符串'false'代表true

6 个答案:

答案 0 :(得分:10)

  

规范中是否有明确的内容?

Yes

  

如果参数为空String(其长度为零),则结果为false;否则结果是真的。

答案 1 :(得分:8)

回复问题的最后部分:

  

在某些情况下你会想要字符串' false'至   代表是真的吗?

我们考虑在用户输入中测试空字符串。为此,我发出:

if (!theInput) {
    // Do something.
}

如果用户在文本框中输入false,我现在是否希望该条件成立?当然,我不是。

答案 2 :(得分:4)

在Javascript中,任何非空的字符串都是真的。

因此,在评估任何非空字符串时,即使字符串本身为true,也会导致'false'

您可以详细了解truthyfalsy值。

如果您想检查字符串的真实性,可以查看它的长度。

var val = str.length > 0;

答案 3 :(得分:2)

非空字符串的值始终为true。

Boolean(false)返回false

Boolean('false')返回true

答案 4 :(得分:1)

根据定义。它是一个字符串,它是这样处理的。无论字符串的含义如何。

如果您的逻辑适用。那么下面的例子如何:

"1+3==2"
"humans have four eyes"

他们也是假的吗?

答案 5 :(得分:1)

如果考虑布尔值,false 为 false,true 为 true。

Boolean(true) //returns true
Boolean(false) //returns false

但是当您谈论诸如“真”和“假”之类的字符串或任何其他非空字符串时,Javascript 不会将它们读取为布尔值,并且它们将像所有其他非空字符串一样为真。

Boolean('true') //returns true
Boolean('false') //returns true
Boolean('blahblahblah') //returns true