4

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

但是,为什么'false'在 javascript 中是真的,规范中有什么明确的吗?是性能问题还是存在您希望字符串'false'表示的情况true

4

6 回答 6

10

规范中有什么明确的吗?

是的

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

于 2015-09-22T15:13:42.963 回答
8

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

是否存在您希望字符串“假”表示真的情况?

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

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

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

于 2015-09-22T15:14:10.583 回答
5

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

因此,当评估任何非空字符串时,true即使字符串本身是'false'.

您可以阅读有关值和值的更多信息。

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

var val = str.length > 0;
于 2015-09-22T15:10:45.043 回答
2

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

Boolean(false)返回假

Boolean('false')返回真

于 2015-09-22T15:10:57.737 回答
1

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

如果你的逻辑会被应用。那么下面的例子呢:

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

它们也是假的吗?

于 2015-09-26T14:58:34.163 回答
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
于 2021-04-08T01:53:53.947 回答