Guest User

Untitled

a guest
Jun 20th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. # Utilizar ou não ponto-e-vírgulas
  2.  
  3. O syntax parser do javascript adiciona ponto-e-virgulas automaticamente. (ASI: automatic semicolon insertion)
  4.  
  5. Erros possíveis:
  6. ```javascript
  7. randomNumber(x){
  8. return
  9. {
  10. number : x
  11. }
  12. }
  13. ```
  14.  
  15. Não vai funcionar porque o syntax parser adiciona um ponto e virgula no return
  16. ```javascript
  17. randomNumber(x){
  18. return ; // ASI vê enter como um carácter e adiciona ponto e virgula
  19. {
  20. number : x
  21. }
  22. }
  23.  
  24. randomNumber(1) // undefined
  25. ```
  26.  
  27. Correcto:
  28. ```javascript
  29. randomNumber(x){
  30. return {
  31. number : x
  32. }
  33. }
  34. ```
  35.  
  36. No caso anterior mesmo que utilizássemos um ponto e virgula o erro persiste
  37. ```javascript
  38. randomNumber(x){
  39. return ; // ASI vê enter como um carácter e adiciona ponto e virgula
  40. {
  41. number : x
  42. };
  43. }
  44.  
  45. randomNumber(1) // undefined
  46. ```
  47.  
  48. Portanto não existe nenhuma vantagem em utilizar “;”, os erros acontecem na mesma.
  49.  
  50. Concluindo: o ASI (Automatic semicolon insertion) é estúpido e mais vale aceitá-lo e compreende-lo.
  51.  
  52. ## Caveats:
  53. Se próxima linha começar com parênteses ou parênteses rectos e não utilizarmos “;” vai quebrar.
  54.  
  55. #### 1. Exemplo (parenteses rectos)
  56. ```javascript
  57. var n = {numbers:[1,2,3]}
  58. [‘Foo’,’Bar’].forEach(value=>{console.log(value)})
  59. ```
  60.  
  61. Executado como:
  62. ```javascript
  63. var n = {numbers:[1,2,3]}[‘Foo’,’Bar’].forEach(value=>{console.log(value)}) // Cannot read property 'forEach' of undefined
  64. ```
  65.  
  66. **Fix:**
  67. ```javascript
  68. var n = {numbers:[1,2,3]};
  69. [‘Foo’,’Bar’].forEach(value=>{console.log(value)})
  70. ```
  71.  
  72. #### 2. Exemplo (parenteses)
  73. ```javascript
  74. a = b + c
  75. (d+e).print()
  76. ```
  77.  
  78. Executado como:
  79. ```javascript
  80. a = b + c(d+e).print();
  81. ```
  82.  
  83. **Fix:**
  84. ```javascript
  85. a = b;
  86. c(d+e).print()
  87. ```
  88.  
  89. ## Resumindo
  90. - **Nunca deixar um return sozinho** na mesma linha (independentemente se usas ponto-e-virgulas ou não)
  91. - O mesmo se aplica a:
  92. - var statement
  93. - expression statement
  94. - do-while statement
  95. - continue statement
  96. - break statement
  97. - throw statement
  98. - Se **próxima linha começar com parênteses, ou parênteses rectos adicionar ponto-e-virgula.**
  99. - Todos os outros casos não interessa se usas ponto-e-virgulas ou não.
Add Comment
Please, Sign In to add comment