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

Stu*_*ser 4 javascript casting boolean truthiness

我知道一个空字符串在javascript中是假的,而一个非空字符串在javascript中是真的.

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

Jam*_*rpe 10

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

是的:

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


Fré*_*idi 8

回答问题的最后部分:

您是否希望字符串'false'表示真实?

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

if (!theInput) {
    // Do something.
}
Run Code Online (Sandbox Code Playgroud)

现在,如果用户false在文本框中输入,我希望该条件成立吗?当然,我没有.


Tus*_*har 5

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

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

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

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

var val = str.length > 0;
Run Code Online (Sandbox Code Playgroud)