之前可能会被问到,但我找不到它。我也阅读了specs,没有看到任何可以解释为什么"0"
评估为true
的讽刺。
那么为什么"0" ? "yes" : "no"
会返回yes
?
("0"==true) ? "yes" : "no"
按预期工作。
答案 0 :(得分:4)
非空字符串是真的。 "0"
不是0
。
但是,比较会将0
强制转换为数字。
注意,在比较期间唯一可以强制转换为true
的字符串是"1"
。 (如果有遗漏的情况我请告诉我!)
"true" == true // false
"foo" == true // false
"0" == true // false
"1" == true // true
答案 1 :(得分:1)
如果一个字符串至少包含一个字符,那么该字符串将评估为truthy。因此,您的第一个示例将返回“是”。
如果您使用了类似以下的内容,则会返回no:
"" ? "yes" : "no" // this evaluates to "no" since an empty string is considered falsey
这是javascript中类型强制如何发生的直接结果。我建议您查看以下链接,了解有关强制类型及其工作原理的更多信息:Type Coercion