"word" ("word") && true // -> true ("-6ren">
gpt4 book ai didi

javascript - 为什么 `(""|| "word") == true` 返回 false?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:41:24 25 4
gpt4 key购买 nike

我目前正在学习 JavaScript,对此我真的很困惑。

谁能解释一下这是怎么可能的:

"" || "word" // -> "word"

("word") && true // -> true

("" || "word") == true // -> false

我尝试在线搜索,但找不到合适的词来描述我的问题。

最佳答案

1。问题一

"" || "word"  // -> "word"

documentation on || 中所述:

Logical OR (||)
expr1 || expr2
Returns expr1 if it can be converted to true; otherwise, returns expr2.

在这种情况下,第一个表达式 "" is falsy ,因此第二项是表达式的结果。如果第一个表达式为真,则不会计算第二项,并返回第一个。

2。问题2

("word") && true // -> true

documentation on && 中所述:

Logical AND (&&)
expr1 && expr2
Returns expr1 if it can be converted to false; otherwise, returns expr2.

这里第一个表达式为真,因此 JavaScript 返回最后一个。如果第一个是假的,则返回值将是第一项。

3。问题3

("" || "word") == true // -> false

根据第一个表达式结果,这等同于:

"word" == true // -> false

对于 == 运算符,强制转换的方式不同。 true is coerced into a string value ,即 "1",显然与 "word" 不同。如果第一项是 "1" 或只是 1,它会产生 true:

"1" == true // -> true
1 == true // -> true

实际使用

如果你有像上一个这样的条件,直接写就可以了:

if ("" || "word") {
console.log('it is truthy!');
}

或者,如果您确实需要 true 作为结果,请将其显式转换为 bool 值 with !! :

result = !!("" || "word");

关于javascript - 为什么 `(""|| "word") == true` 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com