Что такое двойное восклицание!! оператор означает?

Возможный дубликат:
Что такое!! оператора в JavaScript?
Что делает!! (двойной восклицательный знак) означает?

Я использую собственный код JavaScript на своем рабочем месте, и я не могу понять следующую конструкцию.

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

Я понимаю все в приведенной выше строке, кроме оператора !!. Я предполагаю, что это оператор NOT, а NOT of NOT - это исходное значение, но зачем кому-то делать NOT из NOT?

Может кто-нибудь, пожалуйста, помогите мне понять, что происходит на вышеуказанной строке кода?

Ответы

Ответ 1

!! гарантирует, что результирующий тип является логическим (true или false).

javascript:alert("foo")foo

javascript:alert(!"foo")false

javascript:alert(!!"foo")true

javascript:alert(!!null)false

Они делают это, чтобы убедиться, что $('row') не является нулевым.

Он короче, чем $('row') != null ? true : false.