小编典典

有人能解释一下这个“双重否定”的把戏吗?

all

我绝不是 Javascript 方面的专家,但我一直在阅读 Mark Pilgrim 的“Dive into
HTML5”
网页,他提到了一些我希望更好地理解的内容。

他说:

最后,您使用双重否定技巧将结果强制为布尔值(真或假)。

function supports_canvas() {
  return !!document.createElement('canvas').getContext;
}

如果有人能更好地解释这一点,我将不胜感激!


阅读 65

收藏
2022-06-24

共1个答案

小编典典

逻辑 NOT 运算符!将值转换为与其逻辑值相反的布尔值。

第二个!将先前的布尔结果转换回其原始逻辑值的布尔表示。

从逻辑非运算符的这些文档中:

如果其单个操作数可以转换为 true,则返回 false;否则,返回真。

因此,如果getContext给您一个“假”值,!! 它将使其返回布尔值false。否则它将返回true

“虚假”值是:

  • false
  • NaN
  • undefined
  • null
  • ""(空字符串)
  • 0
2022-06-24