Javascript 为什么(!!document.documentMode==true)不相同(document.documentMode==false)?
这真让我困惑。我正在检查IE10+浏览器,所有在线内容都显示使用!!document.documentMode==true,但为什么不document.documentMode==false呢?它们怎么不一样呢?我们是说在第一个文档中document.documentMode缺失,不是false而是null吗?!强制将值转换为相反的真布尔值!!这样做两次,意味着它强制转换为相同的真布尔值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
false => false
!false => true
!!false => false
因此
!!<Falsy value> => false
!!<Falsy value> == true => false
因为undefined不等于false
但是,如果在document.documentMode中使用Boolean,它将对其求值为true
Booleandocument.documentMode==false
因为undefined是一个虚假的值
更多信息。!反转布尔意义,而!!基本上是布尔的东西。他们是对立的,是!!强制值为布尔值而不求反。这是双重否定。一将值强制转换为布尔值以求反,第二个!再次求反,将原始值转换为布尔值。这是否回答了您的问题?您可以使用布尔值转换为布尔值!是的,我认为这是更好的方法,但是!!现在很流行