比较undefined和false非常奇怪的行为

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

use*_*475 5

是. !!x没有返回X. 如果我们使用C++强制转换表示法,则!undefined 强制 undefined 转换为布尔值,false然后查找!((bool)undefined)= !false.所以!!undefined给出!!((bool)undefined)= !!(false)= !true= false,而不是undefined.