javascript - 为什么是!!在检查对象是否为真时更可取?

标签 javascript

<分区>

一些 JavaScript 示例使用 !! 来检查对象是否可用

// Check to see if Web Workers are supported
if (!!window.Worker) {
  // Yes, I can delegate the boring stuff!
}

为什么这比 if (window,Worker) 更受欢迎,在什么情况下会失败?

最佳答案

在这种情况下,它不是可取的,甚至是不同的。 double-bang 将它后面的变量转换为 bool 值(类似于 Boolean() 中的包装 构造函数)。解决 truthy 和 falsey 变量的潜在问题。

但是,将变量单独放在 if() 子句中会做同样的事情(它还会将 if 的括号的内容解析为硬 bool 值) .

双爆炸在其他情况下也很有用,例如如果您想在结束时返回 truefalse基于变量的真实性/虚假性的函数。那将是而不是:

if(condition) {
  return true;
} else {
  return false;
}

你可以简单地写:

return !!condition; 

关于javascript - 为什么是!!在检查对象是否为真时更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838589/

相关文章:

javascript - Vue - 获取没有(事件)的元素调用函数

javascript - 如何在单击按钮时使用 javascript 或 jquery 执行 ctrl+c 或复制命令

javascript - WebGL:INVALID_OPERATION:readPixels:ArrayBufferView 对于尺寸来说不够大

javascript - 数据表选定行背景颜色

javascript - Botpress UMM 使用 Facebook Messenger 逐封发送

javascript - 更改 php 错误中的innerHTML

javascript - 在 maxlength-set 输入上粘贴时检测字符串长度

javascript - Android 4.2 股票浏览器。 Canvas clearRect() 有时不起作用

javascript - 将 jQuery 导航按钮放在 slider 上

javascript - -- 存储我在 React 中使用的 DOM 元素,这样我就不会一直拉取它们?