可能有人问过,但我找不到。我也阅读了规格,没有看到任何可以解释为什么"0"
评估为true
的奇怪之处.
那么"0" ? "yes" : "no"
为什么要返回yes
呢?
("0"==true) ? "yes" : "no"
按预期工作。
非空字符串是真实的。 "0"
不是0
.
但是,比较会将0
强制为一个数字。
请注意,在比较过程中唯一可以强制true
的字符串是 "1"
。(如果我缺少边缘情况,请告诉我!
"true" == true // false
"foo" == true // false
"0" == true // false
"1" == true // true
如果字符串至少有一个字符,则该字符串的计算结果将为 truey。因此,您的第一个示例将返回"yes"。
但是,如果您使用了类似以下内容的内容,它将返回 no:
"" ? "yes" : "no" // this evaluates to "no" since an empty string is considered falsey
这是 javascript 中类型强制发生的直接结果。我鼓励您查看以下链接,以获取有关什么是类型强制及其工作原理的更多信息: 类型强制