A mi entender !! es la forma preferida de garantizar que un valor sea de tipo booleano . Así que hay muchos casos en los que !! sería apropiado utilizar. Sin embargo, en una sentencia if , ¿no sería redundante usar !! en un valor ya que if las declaraciones ya verifican su veracidad?
var user = 'username123' if (!!user) { // arbitrary code } Entonces, sé que usé una cadena aquí, pero realmente no debería importar de qué tipo es la variable porque asumí que el objetivo de usar !! es asegurar un tipo booleano . En otras palabras, !!user es solo otra forma de hacer Boolean(user) . Después de leer detenidamente los documentos de MDN para If..else , parece bastante claro que las declaraciones if ya hacen esto. ¿Por qué entonces hay una necesidad de !! dentro de una sentencia if ? O me equivoco y lo hace !! realmente convierte los valores en un tipo booleano con mayor precisión o de manera diferente que la coerción de tipo realizada por la declaración if ? ¿O es uno de esos casos en los que en general tengo razón, pero hay excepciones en las que las conversiones darían como resultado diferentes valores booleanos?
Sí, es redundante. La condición de la declaración if siempre se fuerza a un valor booleano. Lo mismo se aplica a los operadores ternarios.