As peculiaridades do “!” Bang operator no JavaScript

Matheus Barros
DEVPIRA
Published in
4 min readApr 27, 2021
Anitta e JavaScript?

Vamos entender o operador no JavaScript?

TLDR;

O operador ! (bang) retorna o valor em um contexto Booleano (Falsy) já o operador !! (bang bang) retorna o oposto do valor (Truthy) em um contexto Booleano.

Você sabia que existe um operador lógico no JavaScript chamado Bang? Para ser honesto, o nome técnico é Logical NOT, mas é muito mais legal chamar de Bang, né?

Em outras linguagens de programação, utilizamos o “!” como forma de negar alguma expressão, variável ou função booleana, porém, no JavaScript as coisas são um pouco diferentes, visto que não apenas booleanos podem ter seus valores “negados”.

Todo desenvolvedor, nas suas primeiras aulas de programação entende que “não verdadeiro” = falso e “não falso” = verdadeiro e isso é amplamente usado em várias linguagens, porém, o JavaScript tem um modo diferente de lidar com isso. Para entendermos um pouco precisamos começar do básico e ver um exemplo do operador (!) em uma linguagem fortemente tipada, neste caso utilizaremos C#

Podemos ver na imagem da esquerda a declaração de uma variável booleana cujo valor é true e logo após pedimos para imprimir na tela a negação dela, ou seja, “não verdadeiro”. Podemos ver na imagem da direita, o resultado do console, ou seja, falso.

Em C# tudo se comporta como deve ser, mas o que acontece se tentarmos utilizar o operador de negação em uma string? Veja abaixo:

Como você pode ver, um erro acontece na hora da compilação e a mensagem de erro deixa explicito que o operador “!” não pode ser aplicado no tipo String. Este erro acontece pois o operador “!” só pode ser aplicado em variáveis, funções ou expressões booleanas e esse comportamento ocorre na maioria das linguagens. Não no JavaScript.

No JavaScript é diferente

Quando falamos de JavaScript, temos que entender que ele tem sua própria maneira de interpretar as coisas, e é sobre isso que este artigo se trata.

Para entendermos como o “!” operator funciona no JavaScript precisamos entender que o JS tem coerção automática de tipos, ou seja, ele converte um valor para algo próximo a verdadeiro ou falso (vide Falsy e Truthy) e retorna o oposto disso. Ficou confuso?

Veja abaixo:

Declaramos uma constante, cujo valor é uma string vazia e pedimos para o console imprimir o oposto desta constante, podemos ver que o valor impresso é verdadeiro.

Honestamente, o resultado é sempre uma surpresa, mas após algum tempo acabamos “decorando” alguns resultados, segue abaixo alguns exemplos:

Podemos utilizar também para outros exemplos mais complexos:

Bang Bang (!!) operator

Não é desse tipo de Bang Bang que estamos falando

Temos também o double bang operator ou também conhecido como Bang Bang. Este operador ele faz tudo o que o (!) bang operator faz e ao final nega o resultado

Este operador é muito utlizado quando queremos converter um valor para um contexto booleano, incluvise é uma forma extremamente exuta de obter o mesmo resultado da função Boolean()

Podemos também enxugar algumas funções, veja abaixo:

Esta função retorna true caso o argumento não seja uma string vazia, ou false se a string for vazia. Podemos enguxar esta função deste modo:

Bang Bang! Acertei em você?

Obrigado por ler, espero que você tenha entendido este artigo e que ele tenha sido útil para você.

Até a próxima

Barros

PS: Todas as referêcencias a Anitta e suas obras músicais são 100% feitas para homenagear minha namorada, a melhor dançarina de Bang que eu já vi na vida ❤

--

--