Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Utilizar ou não ponto-e-vírgulas
- O syntax parser do javascript adiciona ponto-e-virgulas automaticamente. (ASI: automatic semicolon insertion)
- Erros possíveis:
- ```javascript
- randomNumber(x){
- return
- {
- number : x
- }
- }
- ```
- Não vai funcionar porque o syntax parser adiciona um ponto e virgula no return
- ```javascript
- randomNumber(x){
- return ; // ASI vê enter como um carácter e adiciona ponto e virgula
- {
- number : x
- }
- }
- randomNumber(1) // undefined
- ```
- Correcto:
- ```javascript
- randomNumber(x){
- return {
- number : x
- }
- }
- ```
- No caso anterior mesmo que utilizássemos um ponto e virgula o erro persiste
- ```javascript
- 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.
- ## Caveats:
- Se próxima linha começar com parênteses ou parênteses rectos e não utilizarmos “;” vai quebrar.
- #### 1. Exemplo (parenteses rectos)
- ```javascript
- var n = {numbers:[1,2,3]}
- [‘Foo’,’Bar’].forEach(value=>{console.log(value)})
- ```
- Executado como:
- ```javascript
- var n = {numbers:[1,2,3]}[‘Foo’,’Bar’].forEach(value=>{console.log(value)}) // Cannot read property 'forEach' of undefined
- ```
- **Fix:**
- ```javascript
- var n = {numbers:[1,2,3]};
- [‘Foo’,’Bar’].forEach(value=>{console.log(value)})
- ```
- #### 2. Exemplo (parenteses)
- ```javascript
- a = b + c
- (d+e).print()
- ```
- Executado como:
- ```javascript
- a = b + c(d+e).print();
- ```
- **Fix:**
- ```javascript
- a = b;
- c(d+e).print()
- ```
- ## Resumindo
- - **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
- - 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.
Add Comment
Please, Sign In to add comment