【发布时间】:2015-08-20 15:58:44
【问题描述】:
我在玩 JSconsole 时发现了一些奇怪的东西。 "0" 的值为 false
"0" == false
=> true
false的值在三进制中使用时返回第二个值
false ? 71 : 16
=> 16
但是,在三进制中使用等于 false 的值 "0" 返回第一个值。
"0" ? 8 : 10
=> 8
但是,如果你使用0作为值,它会返回第二个值
0 ? 4 : 5
=> 5
0 == "0"
=> true
恐怕这对我来说没有意义。
【问题讨论】:
-
"0"是一个非空字符串,即不是假值 -
那为什么使用比较时“0”等于false
== -
==在 Javascript 中没有意义。'' == 0,0 == '0',但'' != '0'。不要假设因为x == y、x和y的行为远程相同。 -
这是 Javascript 中比较容易混淆的特性之一。至少有四种 (!) 值可以
== false但不是“假”的情况。我在All falsey values in JavaScript 问题下整理了一份参考指南。我想我已经记录了所有与虚假相关的怪癖和陷阱……如果我遗漏了任何内容,请发表评论! -
@CodesInChaos,您误会了:
!!"0"的计算结果为true。不过,同意==。
标签: javascript types ternary-operator