繁体   English   中英

为什么 javascript 中的“假”为真?

[英]Why is 'false' truthy in javascript?

我知道空字符串在 javascript 中是假的,非空字符串在 javascript 中是真的。

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

规范中有什么明确的内容吗?

如果参数是空字符串(其长度为零),则结果为假; 否则结果为真。

回复你问题的最后一部分:

是否存在您希望字符串 'false' 代表 true 的情况?

让我们考虑一下我正在测试用户输入中的空字符串。 为了实现这一点,我发出:

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

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

在 Javascript 中,任何不为空的字符串都是真实的。

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

你可以阅读更多关于truthyfalsy值。

如果你想检查一个字符串的真实性,你可以检查它的长度。

var val = str.length > 0;

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

Boolean(false)返回 false

Boolean('false')返回 true

这是根据定义。 它是一个字符串,它是这样处理的。 不管字符串的含义。

如果您的逻辑将被应用。 那么下面的例子怎么样:

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

他们也是假的吗?

如果考虑布尔值,则 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM