当前位置: 首页 > 面试题库 >

有人可以解释这个“双重否定”的把戏吗?[重复]

楚博雅
2023-03-14
问题内容

我绝不是Javascript的专家,但是我一直在阅读Mark Pilgrim的“ Dive intoHTML5”网页,他提到了一些我想更好理解的内容。

他说:

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

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

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


问题答案:

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

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

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

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

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

“假”值是:

  • false
  • NaN
  • undefined
  • null
  • "" (空字符串)
  • 0


 类似资料:
  • 问题内容: 我绝不是Javascript的专家,但是我一直在阅读Mark Pilgrim的“ Dive into HTML5” 网页,他提到了一些我想更好理解的内容。 他说: 最后,您使用双负数技巧将结果强制为布尔值(真或假)。 如果有人能更好地解释这一点,我将不胜感激! 问题答案: 逻辑NOT运算符会将值转换为与其逻辑值相反的布尔值。 第二个将先前的布尔结果转换回其原始逻辑值的布尔表示形式。 从

  • 问题内容: 使用带有x和y数据的pcolormesh绘制数组会删除数据行 为了说明我的意思,请参见以下内容: 产生以下5x5网格: 但是,如果我想为这样的数据定义x和y轴,则pcolormesh将创建一个4x4网格,顶部和右侧的行会丢失… 为了获得完整的5x5图,我必须做 这只是pcolormesh的怪癖吗?还是有人可以解释为什么pcolormesh如此行为? 问题答案: 您看到的行为是预期的。该

  • 问题内容: 我看到人们通常是这样导入Pygame的: 我不明白第二行是什么。如果我们已经导入了整个Pygame,为什么要导入?Pygame导入后是否已经不包含它? 问题答案: 将pygame模块导入“ pygame”命名空间。 将pygame.locals中的所有名称复制到当前名称空间中。这不是必需的,但是可以节省您的键入时间。

  • 它通常会打印“z”。为什么它不返回分段错误?因为我试图访问一个不应该存在的索引,因为strB的大小(索引数量)等于tam_strA,它等于3。 另外,做有什么不同/问题吗?

  • 我是Hibernate和JPA的新手,我对这个注释有问题。有人能简单地解释一下这个注释到底在做什么吗?因为在这种情况下,文档对我来说很难理解。 编辑我明白什么是持久上下文,但在代码中,我有这样的例子: 我对@PerustenceContext做什么有问题。抱歉,也许我没有具体说明。

  • 问题内容: 我只是在android上开始,而我的java很生锈。我不记得曾经见过像这样嵌套在另一个函数中的函数。有人可以向我确切解释final的作用,并解释为什么您要在另一个函数中嵌套这样的功能吗? 问题答案: 这是一个匿名类。实际发生的情况是正在使用重写的函数创建 的子类。 关于匿名类的最优雅的事情之一是,它们使您可以在需要的地方准确定义单发类。此外,匿名类具有简洁的语法,可减少代码中的混乱情况