相关疑难解决方法(0)

有人能解释这个"双重否定"的伎俩吗?

我绝不是Javascript的专家,但我一直在阅读Mark Pilgrim的"潜入HTML5"网页,他提到了一些我想要更好理解的内容.

他说:

最后,使用双负技巧将结果强制为布尔值(true或false).

function supports_canvas() {
  return !!document.createElement('canvas').getContext;
}
Run Code Online (Sandbox Code Playgroud)

如果有人能够更好地解释这一点我会很感激!

javascript html5

193
推荐指数
6
解决办法
3万
查看次数

何时在JavaScript中使用double not(!!)运算符

我理解double not运算符在JavaScript中的作用.我很好奇它的使用,以及我最近做出的断言是否正确.

我说这if (!!someVar)从来没有意义,也不是(!!someVar && ...因为它if&&将导致someVar被评估为布尔值所以!! 是多余的.

事实上,我唯一能想到使用double not运算符是合法的,如果你想对另一个布尔值进行严格的比较(那么可能在返回值中明确要求true或false).

它是否正确?我开始怀疑自己的时候,我注意到的jQuery 1.3.2同时使用if (!!someVar)return !!someVar && ...

双重在这些情况下没有任何实际效果吗?

我个人认为,这只是导致混乱.如果我看到if语句,我知道它将它作为布尔值进行评估.

javascript boolean operators

31
推荐指数
1
解决办法
2万
查看次数

为何使用!! 将变量强制转换为布尔值以用于条件表达式?

!!x将变量的类型强制x转换为布尔值,同时保持其真实性或缺乏真实性 - 请参阅此问题 - 我对条件表达式中使用此问题有疑问.

在JS代码中,我曾经看过几次曾经!!在一个if类似的条件下将变量强制转换为布尔类型

if(!!x) {
    x.doStuff();
}
Run Code Online (Sandbox Code Playgroud)

其中的想法是x在调用方法之前测试if是否已定义.

但是,在我自己的代码中,我总是使用它

if(x) {
    x.doStuff();
}
Run Code Online (Sandbox Code Playgroud)

x定义if的前提下,条件将通过,如果x未定义,则不会通过.

所以我的问题是在这种情况下强制x使用布尔值!!什么意思什么是这个代码这个代码不?

我假设其他程序员不只是使用它,因为它看起来很酷,所以要么这个或我的其他假设是错误的:-)

javascript

12
推荐指数
1
解决办法
694
查看次数

为什么"if(!! variable)"而不是"if(variable)"?

在别人的代码中,我发现这种方式来测试变量的存在:

if(!!variable) {
  //Do something
} else {
  //Something else
}
Run Code Online (Sandbox Code Playgroud)

是否有理由进行测试if(!!variable)而不是if(variable)?这是一个好习惯吗?

javascript

3
推荐指数
1
解决办法
112
查看次数

标签 统计

javascript ×4

boolean ×1

html5 ×1

operators ×1