Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // let -- обычная переменная. если обратиться к ней до объявления -- будет ошибка.
- console.log(a) // Uncaught ReferenceError: a is not defined
- let a = 1
- console.log(a) // 1
- // const -- такая же переменная, защищенная от полной перезаписи.
- const b = 2
- b = 3 // Uncaught TypeError: Assignment to constant variable.
- // НО! содержимое самой переменной можно изменять, например:
- const с = { a: 4 }
- c.a = 5 // работает
- // или
- const d = [1, 2, 3]
- d.push(4) // работает
- // var -- к переменным, объявленным через вар применяеться т.н. hoisting (подвешивание)
- f = () => {
- //...
- if (true) {
- var k = 2;
- }
- var j = 10;
- for (var t of tx) {
- //...
- }
- }
- // это тоже самое что и
- f = () => {
- let k, j, t
- //...
- if (true) {
- k = 2
- }
- j = 10
- for (t of tx) {
- //...
- }
- }
- // могут быть нежелательные и неявные последствия
- // обращение к var переменной до объявления выдаст нам undefined,
- // потому что переменная на самом деле уже объявленна в самом верху через let.
- console.log(v) // undefined
- var v = 20;
- console.log(v) // 20
- // таким образом получается что в 99% случаев нам подходит const
- // в редких случаях, когда содержимое например цикла мутирует какую-то внешню переменную,
- // полностью её перезаписывая -- подходит let.
- // а var лучше не использовать вообще :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement