Avatar ·

O que significa !! (dupla exclamação) em JavaScript?

Olá a todos! Acabei de começar a estudar JavaScript e me deparei com uma construção estranha no código de outra pessoa. Estava escrito algo como: ```javascript let isActive = !!someValue; ``` Eu entendo que um ponto de exclamação `!` é o operador lógico "NOT", que inverte o valor (torna `true` em `false` e vice-versa). Mas por que escrever dois pontos de exclamação seguidos? Não é a mesma coisa que simplesmente escrever `!(!someValue)`? Ou é algum operador especial que eu não conheço? Tentei brincar no console do 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 ``` Os resultados são meio estranhos: `!!"hello"` retorna `true`, embora a string não esteja vazia. `!!0` retorna `false`, embora 0 seja um número. Será que isso tem a ver com coerção de tipos? Expliquem, por favor, para que serve essa dupla exclamação.