【问题标题】:What does the double exclamation !! operator mean? [duplicate]双感叹号是什么!!运营商是什么意思? [复制]
【发布时间】:2011-11-19 03:28:00
【问题描述】:

可能重复:
What is the !! operator in JavaScript?
What does !! (double exclamation point) mean?

我在工作场所浏览了一些自定义 JavaScript 代码,但我无法理解以下构造。

var myThemeKey = (!!$('row') && $('row').hasClassName('green-theme')) ? 'green' : 'white';

!! 运算符外,我了解上述行中的所有内容。我假设它是NOT 运算符,NOTNOT 是原始值,但为什么有人会做NOTNOT

有人可以帮我理解上面的代码行发生了什么吗?

【问题讨论】:

标签: javascript


【解决方案1】:

!! 确保结果类型是布尔值(真或假)。

javascript:alert("foo") --> foo

javascript:alert(!"foo") --> false

javascript:alert(!!"foo") --> true

javascript:alert(!!null) --> false

他们这样做是为了确保$('row') 不为空。

打字比$('row') != null ? true : false短。

【讨论】:

  • 我想补充一点,这是一个双重否定:! 返回 true 如果对象是 nullundefined或空字符串,否则为false。如果你再次否定它,你会得到true 用于存在的值和false 用于不存在的值。
  • 还有 !!NaN 返回 false
猜你喜欢
  • 2011-01-11
  • 1970-01-01
  • 2017-07-14
  • 2010-10-24
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多