关于javascript:双感叹号!!是什么

What does the double exclamation !! operator mean?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the !! operator in JavaScript?
What does !! (double exclamation point) mean?

我正在我的工作场所浏览一些自定义的javascript代码,我无法理解下面的构造。

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

!!运算符外,我了解上面这行的所有内容。我假设它是一个NOT操作符,NOTNOT是原值,但为什么有人要做NOTNOT呢?

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


!!确保生成的类型是布尔型(true或false)。

javascript:alert("foo")->foo

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

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

javascript:alert(!!null)->false

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

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