O syntax parser do javascript adiciona ponto-e-virgulas automaticamente. (ASI: automatic semicolon insertion)
Erros possíveis:
randomNumber(x){
return
{
number : x
}
}
Não vai funcionar porque o syntax parser adiciona um ponto e virgula no return
randomNumber(x){
return ; // ASI vê enter como um carácter e adiciona ponto e virgula
{
number : x
}
}
randomNumber(1) // undefined
Correcto:
randomNumber(x){
return {
number : x
}
}
No caso anterior mesmo que utilizássemos um ponto e virgula o erro persiste
randomNumber(x){
return ; // ASI vê enter como um carácter e adiciona ponto e virgula
{
number : x
};
}
randomNumber(1) // undefined
Portanto não existe nenhuma vantagem em utilizar “;”, os erros acontecem na mesma.
Concluindo: o ASI (Automatic semicolon insertion) é estúpido e mais vale aceitá-lo e compreende-lo.
Se próxima linha começar com parênteses ou parênteses rectos e não utilizarmos “;” vai quebrar.
var n = {numbers:[1,2,3]}
[‘Foo’,’Bar’].forEach(value=>{console.log(value)})
Executado como:
var n = {numbers:[1,2,3]}[‘Foo’,’Bar’].forEach(value=>{console.log(value)}) // Cannot read property 'forEach' of undefined
Fix:
var n = {numbers:[1,2,3]};
[‘Foo’,’Bar’].forEach(value=>{console.log(value)})
a = b + c
(d+e).print()
Executado como:
a = b + c(d+e).print();
Fix:
a = b;
c(d+e).print()
- Nunca deixar um return sozinho na mesma linha (independentemente se usas ponto-e-virgulas ou não)
- O mesmo se aplica a:
- var statement
- expression statement
- do-while statement
- continue statement
- break statement
- throw statement
- O mesmo se aplica a:
- Se próxima linha começar com parênteses, ou parênteses rectos adicionar ponto-e-virgula.
- Todos os outros casos não interessa se usas ponto-e-virgulas ou não.