【问题标题】:Why use '!!' before an expression? [duplicate]为什么使用'!!'在表达式之前? [复制]
【发布时间】:2019-12-12 07:09:42
【问题描述】:

我正在使用安装了 ESLint 的 VSCode,我尝试键入该表达式以获得“真”或“假”输出

const result = goodGuys.includes(guy) ?

但它没有奏效,并且快速修复(来自我不明白的 ESLint,所以我在这里大声笑)删除“?”并在开头添加两个感叹号,效果很好。

const result = !!goodGuys.includes(guy);

有人可以向我解释一下吗?谢谢

【问题讨论】:

  • 上面的 sn-p 在语法上是不正确的。代码到底应该做什么?
  • includes 总是返回一个布尔值。所以,const result = goodGuys.includes(guy) 就足够了

标签: javascript ecmascript-6 boolean eslint type-coercion


【解决方案1】:

这只是 ESLint 的事情。 includes 返回一个布尔值,因此它实际上在代码中的功能类似。 ESLint 有时想要强制执行布尔规则,所以!! 为您执行此操作。它通过使用双重否定来工作 - 一次获得反转的布尔值,然后再次反转它,为您提供表达式的布尔表示。和这个基本一样:

const result = Boolean(goodGuys.includes(guy));

【讨论】:

  • 但是,includes 总是返回一个布尔值。为什么 ESLint 会抱怨这个?
  • 我真的不知道@adiga - 我不使用 linter。
  • 但是,new Boolean() 返回一个对象
  • 只是Boolean() 相当于!!
  • 哦,当然是@SebastianSimon ...谢谢!我完全忘记了!
猜你喜欢
  • 2020-05-04
  • 2012-06-26
  • 1970-01-01
  • 2016-07-11
  • 2020-12-30
  • 1970-01-01
  • 2012-08-31
  • 2012-10-25
  • 1970-01-01
相关资源
最近更新 更多