考虑到最佳实践,我们可以使用双一元运算符!在JavaScript?

Gib*_*boK 8 javascript

据我所知,一元运算!符执行隐式类型转换,有时用于类型转换.

所以基本上!操作符将其操作数转换为布尔值并取消它.

现在:

!!x // Same as Boolean(x)
Run Code Online (Sandbox Code Playgroud)

事实上:

!!'true' === Boolean('true') // true
Run Code Online (Sandbox Code Playgroud)

所以我假设两者!!xBoolean(x)执行相同的操作.

我想知道:

  • 你知道任何警告让我的假设错了吗?
  • 在良好实践方面,哪种方式应该优先考虑?
  • 您是否知道在不同的ECMAScript版本或浏览器供应商之间需要注意哪些差异?

Arm*_*ius 5

  • 您的假设是正确的。这正是它的工作方式,我不知道使用此工具时要特别注意。

  • 说到良好实践,您可能会和支持!!使用该Boolean功能的人一样多。但是,根据我的经验,这似乎 !!在库代码中更为常见(请看jQuery源,您有很多类似的东西return !!locked;)。恕我直言,在不降低代码可读性的情况下,可以充分使用它。

  • 在ECMAScript中很久以来这都是标准; 我不能说Internet Explorer的旧版本(在IE 8之前),但是在这种情况下,您几乎可以信任所有现代浏览器的行为。

标准中的有用参考: