据我所知,javascript中的空字符串是假的,javascript中的空字符串是真的。
但是,为什么javascript中有'false'
truthy,规范中是否有明确的内容?这是性能问题还是在某些情况下您希望字符串'false'
代表true
?
答案 0 :(得分:10)
答案 1 :(得分:8)
回复问题的最后部分:
在某些情况下你会想要字符串' false'至 代表是真的吗?
我们考虑在用户输入中测试空字符串。为此,我发出:
if (!theInput) {
// Do something.
}
如果用户在文本框中输入false
,我现在是否希望该条件成立?当然,我不是。
答案 2 :(得分:4)
在Javascript中,任何非空的字符串都是真的。
因此,在评估任何非空字符串时,即使字符串本身为true
,也会导致'false'
。
如果您想检查字符串的真实性,可以查看它的长度。
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