Avatar ·

¿Qué significa !! (doble signo de exclamación) en JavaScript?

¡Hola a todos! Acabo de empezar a aprender JavaScript y me encontré con una construcción extraña en el código de otra persona. Decía algo como: ```javascript let isActive = !!someValue; ``` Entiendo que un signo de exclamación `!` es el "NOT" lógico, que invierte el valor (convierte `true` en `false` y viceversa). Pero, ¿por qué escribir dos signos de exclamación seguidos? ¿No es lo mismo que simplemente escribir `!(!someValue)`? ¿O es algún operador especial que no conozco? Intenté experimentar en la consola del navegador: ```javascript console.log(!!"hello"); // true console.log(!!0); // false console.log(!!""); // false console.log(!!null); // false console.log(!!undefined); // false console.log(!!42); // true ``` Los resultados son un poco extraños: `!!"hello"` da `true`, aunque la cadena no está vacía. `!!0` da `false`, aunque 0 es un número. ¿Quizás esto tiene que ver con la coerción de tipos? Expliquen, por favor, para qué sirve este doble