0

可能重复:
什么是!! JavaScript 中的(不是不是)运算符?
有人能解释一下这个“双重否定”的把戏吗?

因为我在玩 HTML5 视频的可能性,所以我遇到了getUserMedia.js,它提供跨浏览器支持。

在研究库是如何工作的(并试图让它在 requirejs 模块中工作)时,我发现了以下奇怪的if结构:

if ( !! navigator.getUserMedia_) {
   ...

双重否定?这是什么意思,为什么?为什么不简单使用以下?

if (navigator.getUserMedia_) {
   ...
4

3 回答 3

3

JavaScript 中的双重否定!!只是将值转换为布尔类型。

于 2013-01-15T17:23:48.090 回答
2

!!通常用于将变量转换为布尔值(强制布尔上下文)

使用它是因为可以将不同的类型评估为false, undefined,null''

如果你使用:!!undefined,你会得到:

  1. !!undefined
  2. !true
  3. false

这样,如果在布尔上下文中进行评估,您实际上会得到等于参数的布尔值。

于 2013-01-15T17:23:58.603 回答
0

它不完全是一个运算符,它是两个相同的 ( !),它基本上将任何东西转换为布尔值。换句话说,取一个值的双重否定。

于 2013-01-15T17:24:24.613 回答