Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. // let -- обычная переменная. если обратиться к ней до объявления -- будет ошибка.
  2. console.log(a) // Uncaught ReferenceError: a is not defined
  3. let a = 1
  4. console.log(a) // 1
  5.  
  6. // const -- такая же переменная, защищенная от полной перезаписи.
  7. const b = 2
  8. b = 3 // Uncaught TypeError: Assignment to constant variable.
  9.  
  10. // НО! содержимое самой переменной можно изменять, например:
  11. const с = { a: 4 }
  12. c.a = 5 // работает
  13. // или
  14. const d = [1, 2, 3]
  15. d.push(4) // работает
  16.  
  17. // var -- к переменным, объявленным через вар применяеться т.н. hoisting (подвешивание)
  18. f = () => {
  19. //...
  20. if (true) {
  21. var k = 2;
  22. }
  23. var j = 10;
  24.  
  25. for (var t of tx) {
  26. //...
  27. }
  28. }
  29.  
  30. // это тоже самое что и
  31. f = () => {
  32. let k, j, t
  33. //...
  34. if (true) {
  35. k = 2
  36. }
  37. j = 10
  38.  
  39. for (t of tx) {
  40. //...
  41. }
  42. }
  43.  
  44. // могут быть нежелательные и неявные последствия
  45. // обращение к var переменной до объявления выдаст нам undefined,
  46. // потому что переменная на самом деле уже объявленна в самом верху через let.
  47. console.log(v) // undefined
  48. var v = 20;
  49. console.log(v) // 20
  50.  
  51.  
  52. // таким образом получается что в 99% случаев нам подходит const
  53. // в редких случаях, когда содержимое например цикла мутирует какую-то внешню переменную,
  54. // полностью её перезаписывая -- подходит let.
  55. // а var лучше не использовать вообще :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement