O que o operador !! (dupla exclamação) faz em JavaScript?
O que é !! (dupla negação) na verdade?
Na verdade, !! não é um operador separado. É apenas o operador lógico ! (NOT) usado duas vezes. O primeiro ! converte o valor para um boolean e o inverte. O segundo ! inverte novamente, retornando o valor boolean original correspondente ao valor truthy ou falsy.
Em outras palavras, !!value é uma forma concisa de escrever Boolean(value). Ele retorna true se o valor for truthy (como strings não vazias, números diferentes de zero, objetos) e false se for falsy (como 0, '', null, undefined, NaN, false).
Exemplos:
!!'hello'→true(string não vazia é truthy)!!''→false(string vazia é falsy)!!42→true(número diferente de zero é truthy)!!0→false(zero é falsy)!!{}→true(objeto vazio é truthy)!!null→false(null é falsy)!!undefined→false(undefined é falsy)
É popular porque é uma maneira curta e explícita de garantir que um valor seja convertido para boolean, especialmente em condições ou ao atribuir valores booleanos. Alternativas mais legíveis incluem Boolean(value) ou uma condição explícita como value ? true : false.