Вопрос: Какие различия между объявлением переменных с использованием VAR, пусть и Const?
✨ Бонус: Что такое поднимание?
Краткий ответ: Это все способы объявления переменных. var
это наследие, Пусть
и Const
Новые, где Пусть
предназначен для соревновательной переменной ссылки и Const
для неизменной ссылки.
Подъемное подъемное, когда вы используете переменную, прежде чем определить ее.
Дольше ответ: Давайте начнем с var
Отказ Синтаксис довольно простой.
var x = 1, y = 2; console.log(x, y) // 1, 2
Как вы можете догадаться, это наследие по какой-то причине. И вы были правы, есть даже несколько причин.
Например, var
Декларация происходит до Любое выполнение кода, поэтому вы можете в основном использовать переменную в коде и объявить его позже.
x = 2 var y = x + 1 console.log(y) // 3 var x;
Это абсолютно странно и сложно с моей точки зрения, потому что только определение переменной наступает перед выполнением, но не инициализация.
var y = x + 1 console.log(x) // undefined console.log(y) // NaN var x = 2;
Итак, когда вы используете переменную до определения, называется Подъем ✨ (не используйте это. Действительно.)
Реальная проблема с var
Это сфера применения. var
Объявите переменную для текущей области функции, но не для блока. Здесь.
for (var i = 0; i < 5; i++) { setTimeout(() => console.log(i)) }
Угадай, что. Вывод – 5,5,5,5,5
.
🤯🤯🤯.
Хорошо, хорошо, это было темные времена, и вы сейчас в безопасности (почти).
Пусть
и Const
вступают в игру. Они будут работать именно так, как вы ожидаете (почти). Вернуться к предыдущему примеру.
// Notice let for (let i = 0; i < 5; i++) { setTimeout(() => console.log(i)) }
Вывод в порядке, это 0,1,2,3,4
Отказ
Итак, в чем разница между позволять
и конститут
? В основном Пусть
для переменных, которые вы хотите иметь возможность обновить и Const
для статических.
«Почти» проблема, которую я упомянул ранее, это то, когда вы используете конститут
Значение не изменяется только для некоторых примитивных типов, таких как цифры.
let a = 1 a = 2 // 👌 const b = 1 b = 2 // Error: Assignment to constant variable.
Но Const
не делает сложные типы в качестве массивов или объектов неизменными.
const y = [1] y.push(2) // 👌 console.log(y) // [1,2]
🤷 Жизнь странная, да 🤷
Реальные приложения:
Так что касается реальных приложений, существует полезное разрушительное задание.
let [a, b] = [1,2,3] console.log(a, b) // 1, 2 let [c, ...d] = [1,2,3] console.log(c, d) // 1, [2,3] let { e, f } = { a: 1, e: 2, f: 3 } console.log(e, f) // 2, 3 let { g, ...h } = { a: 1, g: 2 } console.log(g, h) // 2, { a: 1 }
Существует особо полезный случай, когда вам нужно убрать некоторое поле.
let { password, ...safeUser } = user return safeUser
Другой настоящий наконечник не должен мутировать любой массив или объект, но это немного не имеет возможности этой статьи.
Ресурсы: MDN/var MDN/Пусть MDN/Const.
Другие сообщения:
- JS Интервью за 2 минуты/воспоминания 💭
- Скрытая сила
- а также &&
Кстати, я опубликую более веселые вещи здесь и на Twitter Отказ Давайте будем друзьями 👋
Оригинал: “https://dev.to/kozlovzxc/js-interview-in-2-minutes-var-let-const-39p1”