ily*_*oli 3 javascript comparison logic comparison-operators
我在控制台中有这个输出:
console.log((!undefined)==(!false)) // true (fine)
console.log((!!undefined)==(!!false)) // true (still fine)
Run Code Online (Sandbox Code Playgroud)
据我所知,!!x==x
不是吗?
console.log((undefined)==(false)) // false
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么这会返回错误?
是不正确的!!false==false
和!!undefined==undefined
?
是. !!x
并没有返回X. 如果我们使用C++强制转换表示法,则!undefined
强制 undefined
转换为布尔值,false
然后查找!((bool)undefined)
= !false
.所以!!undefined
给出!!((bool)undefined)
= !!(false)
= !true
= false
,而不是undefined
.