值得一谈的是falsy值与的松散比较==
,这会使用ToNumber()
并可能由于潜在的差异而引起混淆。它们有效地分为三类:
这就是为什么许多开发人员和许多样式指南(例如standardjs)偏爱===
且几乎从不使用的原因之一==
。
“ Truthy”仅表示JavaScript的内部ToBoolean
函数return true
。Javascript的应用怪癖要知道的(和另一个很好的理由,更喜欢===
了==
):这是可能的值是truthy(ToBoolean
回报true),而且还== false
。
你可能会认为这if (value && value == false) alert('Huh?')
是不可能发生的逻辑上的可能性,但对于以下情况,它将是可能的:
这些只是一些人可能期望是虚假的价值观,但实际上是真实的。
来自的任何内容typeof,总是返回非空字符串,例如:
typeof null
('object'
由于长期存在的错误/怪癖而返回字符串)
任何对象(document.all
浏览器中的“恶意违反”除外;请记住,null尽管有typeof其他建议,但这实际上不是对象)。包含:
{}