Прочитав это, вы сможете понять концепции переменных и правильно использовать их в любом кодировании, связанном с javascript, а также сможете ответить на эти важные вопросы, перечисленные ниже, которые обычно задают в любых интервью, посвященных Javascript:-

В чем разница между var и let и const?
Почему мы должны использовать let и const вместо var?
Что такое подъем?
Что такое временная мертвая зона (TDZ)?
Что такое привязка блоков и лексическая область видимости?

ВАР

Объявления переменных с использованием var обрабатываются так, как будто они находятся в верхней части функции (или в глобальной области видимости, если они объявлены вне функции) независимо от того, где происходит фактическое объявление; это называется подъемом. Объявление значения поднимается вверх, а инициализация остается на том же месте.

Объясните объявление и определение переменной, а также значение foo в каждом блоке в приведенном ниже коде.

function getValue(condition) {
if (condition) {
var foo = “nikola”;
// другой код
return foo;
} else {
/> вернуть ноль;
}
}

Решение
function getValue(condition) {
if (condition) {
var foo = “nikola”;
// другой код
return foo;
} else {
// здесь существует значение со значением undefined
return null;
}
// здесь существует значение со значением undefined
}

Пояснение

// За кулисами движок JavaScript изменяет функцию getValue, чтобы она выглядела следующим образом:

function getValue(condition) {
var for;
if (condition) {
foo = “nikola”;
// другой код
return foo;
> } else {
вернуть null;
}
}

Объявление значения поднимается вверх, а инициализация
остается на том же месте. Это означает, что значение переменной по-прежнему доступно
из предложения else. При доступе из предложения else переменная
будет просто иметь значение undefined, поскольку она не была инициализирована в блоке
else.

Примечания. По этой причине ECMAScript 6 вводит параметры области видимости на уровне блоков
, чтобы дать разработчикам больший контроль над жизненным циклом переменной.

ПОЗВОЛЯТЬ

Объявления let не поднимаются в начало окружающего блока, лучше
размещать объявления let первыми в блоке, чтобы они были доступны для всего блока
.

Очки беса

Поднятие не происходит в let.
Переменная Let недоступна за пределами блока, в котором она объявлена.
Примечание: сверху поднимается только объявление, а не определение
Let не предоставляет нам redeclaration
Let не будет переопределять идентификатор, который уже существует в той же области видимости, означает, что если он объявлен один раз глобально, то его нельзя изменить глобально, аналогично для уровня блока, его нельзя изменить в этом конкретном блоке. .

Что не так в приведенном ниже коде?

вар фоо= 30;

пусть foo = 40;

Пояснение

Здесь foo объявляется дважды: один раз с помощью var и один раз с помощью
let. Поскольку let не будет переопределять идентификатор, который уже существует в
той же области видимости, объявление let вызовет ошибку.

Решение

var count = 30;
if (condition) {
// не выдает ошибку
let count = 40;
// больше кода
}

И наоборот, ошибка не возникает, если объявление let создает новую переменную с тем же именем, что и переменная в содержащей ее области.
Это объявление let не вызывает ошибку, поскольку создает новую
переменную с именем count внутри инструкции if вместо создания count в окружающем
блоке. Внутри блока if эта новая переменная скрывает глобальный
счетчик, предотвращая доступ к нему до тех пор, пока выполнение не выйдет из блока.

Постоянная

Привязки, объявленные с помощью const, считаются константами, то есть
их значения не могут быть изменены после установки. По этой причине каждая константная привязка должна быть инициализирована в объявлении.

Что не так в приведенном ниже коде?

постоянное имя;

Пояснение

Привязка «имя» вызовет синтаксическую ошибку, если вы попытаетесь запустить программу, содержащую этот код, поскольку имя не
инициализировано. Поскольку всякий раз, когда мы используем const, мы всегда должны инициализировать привязку const во время объявления.

Решение

Синтаксическая ошибка: отсутствует инициализация
имя константы;

Допустимая константа
const name="spidy";

Здесь инициализируется привязка имени, поэтому его объявление const будет работать
без проблем.

Пожалуйста, перейдите выше и попробуйте ответить на вопросы, перечисленные в начале.

Надеюсь, это поможет кому-то — спасибо за чтение :-)