http://javascript.ru/boolean-operators
alert([
!true,
!!true,
!!!true,
!!!!true,
!!!!!true,
!!!!!!true
].join('\n'))
Вообще
!! используется в основном для приведения не булева значения к булеву.(что на самом деле в большинстве случаев в js не требуется, ибо прведение типов)
var a, b = 'somesh...', c = '', d = document;
alert([
a + ' > ' + !!a,
b + ' > ' + !!b,
c + ' > ' + !!c,
d + ' > ' + !!d
].join('\n'))