Por que usar ponto e vírgula no Javascript?
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
Abaixo temos um exemplo deste corretor, e um erro simples e esperado da ASI Qual sera o retorno desta chamada?
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:
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:
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:
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.