什么是双重感叹!! 运营商意味着

sti*_*ies 44 javascript

可能重复:
什么是!! JavaScript中的运算符?
什么!! (双感叹号)是什么意思?

我在我的工作场所经历了一些自定义JavaScript代码,我无法理解以下构造.

var myThemeKey = (!!$('row') && $('row').hasClassName('green-theme')) ? 'green' : 'white';
Run Code Online (Sandbox Code Playgroud)

除了!!操作员,我理解上面一行的所有内容.我认为它是一个NOT运营商和NOTNOT是原始值,但为什么会有人做NOTNOT

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

i_a*_*orf 103

!!确保得到的类型是布尔型(真或假).

javascript:alert("foo") - > foo

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

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

javascript:alert(!!null) - > false

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

键入的时间比$('row') != null ? true : false.

  • 我想补充一点,这是一个双重否定:如果对象是 *null*、*undefined* 或空字符串,则“!”返回“true”,否则返回“false”。如果再次否定它,则存在的值会得到“true”,不存在的值会得到“false”。 (27认同)