Этот термин, вероятно, может вас отпугнуть, но на самом деле это не очень сложная закулисная логика. Хостинг - это вызов переменных или функций в верхней части области, независимо от того, где они объявлены. Временная мертвая зона - это период между инициированием переменной и подъемом. Это может показаться запутанным, но следуйте примеру кода ниже.

перемещение ключевого слова var

Как вы можете видеть в глобальной области видимости, переменная a имеет значение undefined в строке 8. Она выводит undefined, потому что переменная a выделена в памяти, но еще не присвоила ей 1. В этом случае он выводит undefined, а не сообщает нам об ошибке.

ES6 let и const подъемная и временная мертвая зона

На этом рисунке вы могли заметить, что переменная let a не входит в глобальную область видимости. Фактически, он находится в области Script, которая является отдельной областью, и когда вы пытаетесь получить доступ к объекту до того, как он был объявлен, он выдает ReferenceError, почему это так? Это потому, что let a находится во временной мертвой зоне, и к вам можно будет получить доступ только после того, как он будет объявлен. Это известно как временная мертвая зона (TDZ).

Есть ли различия между Var, Let и Const?

Брифинг по Вар

Фактически, он не получает никаких ошибок, пока a повторно объявляет и присваивает ему новое значение.

Пусть брифинг

Мы не можем повторно объявить ту же самую переменную. При этом он вернет SyntaxError с сообщением, что идентификатор «a» уже был объявлен, поэтому он намного более строг, чем var.

Постоянный брифинг

В этом случае вы получите SyntaxError с отсутствующим инициализатором в объявлении const, что намного строже, чем let и var.

при попытке повторно назначить константную переменную он получает присвоение TypeError константной переменной, что означает, что константная переменная не может быть изменена позже после ее инициализации.

это или ключевое слово window (окно только для javascript браузера)

это ключевое слово относится к глобальному, что вы можете увидеть ниже.

Так как let b и const c находятся в области сценария, невозможно получить доступ с помощью this.b, this.c (глобальная область), он просто возвращает undefined, а var возвращает значение 10 даже внутри или вне вызова функции.