He estado debatiendo este tema con un compañero de trabajo durante aproximadamente una semana. Soy un gran fanático del código abreviado, el uso de ternaries, etc., siempre que puedo. Últimamente, me ha estado molestando sobre mi uso de dobles exclamaciones. Después de realizar numerosas pruebas, estoy empezando a estar de acuerdo con él ... las dobles exclamaciones pueden no ser prudentes en mi código. Considere esto:JS doble exclamación: ¿hay alguna buena razón para usarlo?
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
El ejemplo anterior funciona como se esperaba. Sin embargo, si estamos controlando una variable que puede volver indefinida, obtenemos un error, especialmente en IE7. Tenemos nuestro resultado esperado, sin embargo, si corremos esto en nuestra consola:
if(randomvar) alert('Works');
uso de este enfoque, si la variable no está definida, se produce un error en silencio. Esto me hace cuestionar el uso de dobles exclamaciones por completo. ¿Hay alguna situación que realmente haga que este operador sea beneficioso?
(Upvote para el uso de la palabra "truthiness"!) gran explicación, es también digno de mención que cuando se utiliza este operador como esto: 'return !! (window.Object && (obj1.function1 || obj.2function2)));' Extiende todo el "forzar la conversión" en todas las cosas. convertallthethings.jpeg –