我在发现JavaScript比较的几率。我想找到一个比较棘手的例子,以及在某些情况下如何导致错误。为什么在JavaScript中undefined不等于零?
我想过一些输入变量保持未定义的例子,并将其与零比较。因为不确定是假的时,转换为布尔和零为假时,转换为布尔我决定测试一下下面的代码:
var x;
//Here x should be initialized but due to some circumstances is not
if(x == 0){
//This should run
}
令人惊讶的...
Boolean(undefined) //false
Boolean(0) //false
x //undefined
x == 0 //false
为什么它是这样呢?
既然'1'和'2'都是真的,你会期望'1 == 2'是'true'吗? –
你期待什么样的答案超越“因为规格说明”? http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 – Quentin
那么'未定义!= 0',我想那就是它。请参阅此处以获取JS比较的完整列表:https://dorey.github.io/JavaScript-Equality-Table/ –