significa che in certi casi può tornare utile ... quello che hai scritto non è sbagliato ... ma visto che 3 è già un'espressione considerata vera è forse superfluo.
Alcuni esempi
codice:
var fakefalse = "";
alert(!!fakefalse === false); // true, evita il controllo sulla length di stringa
fakefalse = "0";
alert(!!fakefalse === false); // false ... la stringa non è vuota
fakefalse = 0;
alert(!!fakefalse === false); // true, zero castato è true ricastato è false
fakefalse = 1;
alert(!!fakefalse === false); // false ... 1 castato a booleano è false, ricastato è true
fakefalse = [];
alert(!!fakefalse === false); // false ... 1 oggetto array castato è false anche se vuoto
// ricastato è quindi true
fakefalse = {};
alert(!!fakefalse === false); // false ... oggetto, come l'array
fakefalse = null;
alert(!!fakefalse === false); // true
var faketrue;
alert(!!faketrue === false); // true, faketrue è undefined
function test(a){
if(!!a)
alert("faccio qualcosa");
};
test(); // non accade niente
test(""); // non accade niente
test("fai qualcosa"); // avviso faccio qualcosa