lo scrivo perchè un utente l'ha chiesto da un'altra parte


usare !! significa fare un fast-cast booleano

non(non(qualcosa))

se qualcosa è 1 o "uno" o {} o [] o una variabile di qualunque tipo diversa da null, undefined, 0 o false ... non qualcosa sarà false e non false sarà true, non un epsressione valutabile come true ma esattamente true



var qualcosa = {};

true === !!qualcosa // vera

se qualcosa è null, false o undefined o 0 , non qualcosa sarà true e non true sarà esattamente false.

non è indispensabile in JS ma se si vuole fare poi un confronto == true o false che sia è il modo più rapido per castare una variabile.