Javascript let vs var: разница и сравнение

Javascript let и var используются для объявления переменных. До ES6 у JavaScript было только два типа области видимости:

  1. Global Scope
  2. Function Scope

Глобальная область действия

Переменные, объявленные глобально (вне любой функции), имеют глобальную область действия.

 var netflixFilm = "enola  holms ";//код здесь может использовать netflixFilmfunction Detective () {//код здесь также может использовать netflixFilm} 

В этом примере переменная определена вне функции. Так что это в глобальном масштабе.

Вы можете получить доступ к глобальным переменным где угодно в программах JavaScript.

Область действия

Переменные, объявленные локально , что означает внутри функции иметь область действия.

//код здесь не может использовать netflixFilmfunction Detective () {var netflixFilm = "enola holms"; //код здесь может использовать netflixFilm}//код здесь не может использовать netflixFilm 

В этом примере вы можете видеть, что мы определили переменную внутри функции. Вы можете получить доступ только к переменной внутри функции. Вы не можете получить доступ к переменной вне функции.

Javascript let vs var

Разница между let и var в том, что let имеет область видимости блока, а var — область видимости функции. Если вы используете ключевое слово var и инициализируете переменную внутри функции, тогда это локальная область видимости. В противном случае это глобальная область видимости.

 var netflixFilm 

См. Следующий синтаксис ключевого слова let, в котором переменные let являются заблокированными областями.

 let netflixFilm 

Создание глобальных свойств

Вставляются глобальные переменные var в глобальный объект как свойства. В браузере глобальный объект — это окно, а на сервере — глобальный объект.

 var netflixFilm = 'Enola'console.log (window.netflixFilm) 

Вывод

 Enola 

Однако переменные let не вставляются в глобальный объект .

 let netflixFilm = '' console.log (window.netflixFilm) 

Вывод

 undefined 

JavaScript var vs let: повторное объявление переменной

Ключевое слово var позволяет нам повторно объявить переменную без каких-либо проблем. Ключевое слово let не позволяет повторно объявить переменную, и если вы попытаетесь, то получите сообщение об ошибке.

 var netflixFilm = 'Enola'var netflixFilm =' Enola Holmes'console.log (netflixFilm) 

Вывод

 Энола Холмс 

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

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

Повторное объявление переменной с использованием ключевого слова let может решить эту проблему. Давайте проверим то же самое для ключевого слова let.

 let netflixFilm = 'Enola'let netflixFilm =' Enola Holmes'console.log (netflixFilm) 

Вывод

/Users/krunal/Desktop/code/node-examples/es/app.js:2let netflixFilm = 'Enola Holmes' ^ SyntaxError: идентификатор 'netflixFilm' уже имеет  был объявлен 

Мы получаем SyntaxError: Идентификатор ‘ netflixFilm’ уже был объявлен ошибкой.

Временная мертвая зона

Чтобы понять временную мертвую зону, давайте посмотрим жизненные циклы переменных var и let, которые состоят из двух этапов:

  1. создание
  2. выполнение

Переменные var

В на этапе создания переменной var назначается место для хранения и она немедленно инициализируется значением undefined.

На этапе выполнения переменной var присваиваются значения, определенные присваиваниями, если они есть. Если их нет, то значение переменных будет undefined .

Переменные let

На этапе создания переменным let назначаются места для хранения, но они не инициализируются. Ссылка на неинициализированные переменные приведет к возникновению ReferenceError .

Переменная let имеет ту же фазу выполнения, что и переменная var .

Переменная let имеет временные мертвые зоны, а переменная var — нет.

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

JavaScript let vs var: Hoisting.

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

Переменные, определенные с помощью let keyword поднимаются в верхнюю часть блока, но не инициализируются. Если мы используем переменную let до ее объявления, это приведет к ошибке ReferenceError .

Переменная, объявленная с помощью ключевого слова var определяется во всей программе JavaScript по сравнению с let. Давайте лучше поймем это, используя следующий код.

 console.log (netflixFilm) var netflixFilm = 'Enola'console.log (netflixFilm) 

Вывод

 undefinedEnola 

Перед инициализацией переменной, если мы зарегистрируем эту переменную, мы получим undefined. Видите, никаких ошибок не выдает. Это просто дает undefined . Давайте проверим то же самое для ключевого слова let .

 console.. log (netflixFilm) let netflixFilm = 'Enola'console.log (netflixFilm) 

Вывод

/Users/krunal/Desktop /code/node-examples/es/app.js:1console.log(netflixFilm) ^ ReferenceError: невозможно получить доступ к 'netflixFilm' перед инициализацией на объекте.  (/Users/krunal/Desktop/code/node-examples/es /app.js:1:13)

И мы получили ReferenceError: Невозможно получить доступ к переменной до инициализации . Это означает, что мы не можем использовать переменные, пока не определим ключевое слово let.

Заключение

Есть некоторые преимущества когда мы используем let вместо var , как мы не можем повторно объявить переменную let . Переменные let имеют блочную область видимости. Это все для Javascript let vs var.

Оцените статью
nanomode.ru
Добавить комментарий