Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么(!!document.documentMode==true)不相同(document.documentMode==false)?_Javascript - Fatal编程技术网

Javascript 为什么(!!document.documentMode==true)不相同(document.documentMode==false)?

Javascript 为什么(!!document.documentMode==true)不相同(document.documentMode==false)?,javascript,Javascript,这真让我困惑。我正在检查IE10+浏览器,所有在线内容都显示使用!!document.documentMode==true,但为什么不document.documentMode==false呢?它们怎么不一样呢?我们是说在第一个文档中document.documentMode缺失,不是false而是null吗?!强制将值转换为相反的真布尔值!!这样做两次,意味着它强制转换为相同的真布尔值 false => false !false => true !!false => fals

这真让我困惑。我正在检查IE10+浏览器,所有在线内容都显示使用!!document.documentMode==true,但为什么不document.documentMode==false呢?它们怎么不一样呢?我们是说在第一个文档中document.documentMode缺失,不是false而是null吗?

!强制将值转换为相反的真布尔值!!这样做两次,意味着它强制转换为相同的真布尔值

false => false
!false => true
!!false => false
因此

!!<Falsy value> => false
!!<Falsy value> == true => false
因为undefined不等于false

但是,如果在document.documentMode中使用Boolean,它将对其求值为true

Booleandocument.documentMode==false

因为undefined是一个虚假的值


更多信息。

!反转布尔意义,而!!基本上是布尔的东西。他们是对立的,是!!强制值为布尔值而不求反。这是双重否定。一将值强制转换为布尔值以求反,第二个!再次求反,将原始值转换为布尔值。这是否回答了您的问题?您可以使用布尔值转换为布尔值!是的,我认为这是更好的方法,但是!!现在很流行