SHARE
TWEET

Untitled

a guest Apr 20th, 2019 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 лучше не использовать вообще :)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top