Ho discusso questo argomento con un collega per circa una settimana. Sono molto appassionato di codice stenografico, utilizzo di ternari, ecc., Ovunque io sia. Ultimamente, mi sta prendendo in giro per il mio uso di doppie esclamazioni. Dopo aver eseguito numerosi test, sto iniziando ad essere d'accordo con lui ... le doppie esclamazioni potrebbero non essere saggia da usare nel mio codice. Considera questo:JS doppio punto esclamativo: c'è qualche buona ragione per usarlo?
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
L'esempio precedente funziona come previsto. Tuttavia, se stiamo controllando una variabile che può tornare indefinita, otteniamo un errore, specialmente in IE7. Otteniamo il nostro risultato atteso, tuttavia, se corriamo questo nella nostra console:
if(randomvar) alert('Works');
Usando questo approccio, se la variabile non è definita, non riesce in silenzio. Questo mi fa dubitare dell'uso di doppie esclamazioni. C'è una situazione che rende davvero utile questo operatore?
(Upvote per usare la parola "truthiness"!) grande spiegazione, è anche la pena notare che quando si utilizza questo operatore in questo modo: 'return !! (window.Object && (obj1.function1 || obj.2function2)));' Estende l'intero "forzare la conversione" su tutte le cose. convertallthethings.jpeg –