Por que usar ponto e vírgula no Javascript?

Marcos Junior | codermarcos
Frontend Quest
Published in
3 min readApr 23, 2018

Ponto e vírgula no javascript, Usar ou não usar? Eis a questão!

Entendendo como funciona a inserção automática de ponto e vírgula, no JavaScript, como não cometer erros confiando muito nela, se é realmente opcional ou não e minha opinião sobre.

Usar ou Não?

Se você programa em linguagens como Java, C#, Golang, etc. Provavelmente você prefere usar ponto e vírgula, mas se você usa linguagens como Ruby, Python, Swift, Kotlin etc. Você não se importa muito com isso. Certamente por enquanto ainda não tem um certo ou errado, você pode optar por usar ou não. Vamos entender um pouco mais sobre.

Não é opcional

Quando ponto e vírgula não são inseridos, o JavaScript corrige inserindo para você, isso se chama ASI (Automatic Semicolon Insertion), ou traduzindo inserção automática de ponto e vírgula, ela segue algumas regras, é como um corretor de syntax. Já sabemos como os corretores funcionam. 😂 rsrs

Corretor em ação

Abaixo temos um exemplo deste corretor, e um erro simples e esperado da ASI Qual sera o retorno desta chamada?

Código exemplo de correção

Deveria ser "Ola sou Marcos, tenho 19 anos de idade, trabalho como Frontend" mas o retorno será undefined. Isso ocorre devido a correção realizada. Ele adiciona o ponto e vírgula ao final da linha 2, á frente do return, ficando assim após a correção:

Codigo exemplo correção executada

Regras

Em alguns casos é obrigatório conter ponto e vírgula, e por este motivo quando não é encontrado, é adicionado automáticamente, confira as regras:

Onde usar

Casos onde é obrigatório o uso de um delimitador:

Declaração de variáveis var a = 666;

Expressões var a = "number: " + 666;

do-while do suaFuncao while(suaCondicao);

continue continue;

break break;

return return;

throw throw "Seu erro mimi";

O ponto e vírgula ;, é um delimitador e serve para todo caso, porem não é o único delimitador, a quebra de linha \n e \r\n tambem é, no JavaScript, exceto quando a proxima linha iniciar com algum destes caracteres [, (, {, +, -, *, /, ., ,, ou algum operador que indique uma unica expressão. Por exemplo:

Exemplos onde a quebra de linha não funcionaria

Onde NÃO usar

Não é necessário usar nos seguintes casos:

Após um if ou else com chaves if (...) {...} else {...}

Após for com chaves for (...) {...}

Após while com chaves while (...) {...}

Após funções function (arg) { }

Minha opinião

Mantenha um padrão no projeto, se decidir usar, use no projeto inteiro, ou então não use, para manter o padrão use algum lint. Em meus projetos pessoais eu prefiro fazer o uso do ponto e vírgula pelos seguintes motivos:

Recomendação

A própria TC39 recomenda que usem ponto e vírgula nos seus códigos, em vez de confiar no ASI. Alem de grandes empresas como Google usa-lo no seu padrão de código (Google javascript guides).

Achar o erro

Erros pela ausência de ponto e vírgula são muitos discretos e quase sempre é rastreado incorretamente. Abaixo um exemplo de erro, tente localiza-lo:

Codigo que gera um exception devido a ausencia do ponto e vírgula

Neste caso o erro esta na linha 2, e deve-se ausência de um ponto e vírgula. Este erro ocorre devido a uma exceção na regra.

Conclusão

Independente se você usa ou não, é importante saber onde é realmente necessário usar, nunca confiar 100% no ASI, até porque os próprios criadores recomendam. Sempre manter um padrão de código e o mais importante, ter bom senso e lembrar que no seu projeto você escolhe mas em outros projetos nem sempre é possível fazer esta escolha, saber respeitar o código alheio.

--

--