为什么三元(" 0"?"是":" no")返回"是"在JavaScript中?

时间:2015-01-05 23:55:04

标签: javascript ternary-operator

之前可能会被问到,但我找不到它。我也阅读了specs,没有看到任何可以解释为什么"0"评估为true的讽刺。

那么为什么"0" ? "yes" : "no"会返回yes

("0"==true) ? "yes" : "no"按预期工作。

2 个答案:

答案 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