Привет, ребята, как дела

Хочу немного поговорить об истории JS.

Итак, JavaScript был создан Брендамом Эйхом всего за 10 дней в 1995 году, когда он работал над Netscape Navigator.

После создания языка у них возникла проблема, какое имя выбрать. Из-за популярности Java они изменили имя на Javascript. Кстати, первоначальное название было LiveScript.

Из-за своей популярности и конкурирующих версий он был доставлен в ECMA International. Вы можете спросить: «Хорошо, братан, мы это понимаем, но что означает ES-5 или ES-6?»

Хорошо, посмотрите, на версии языка ссылаются по номеру версии ECMA, например ES5 и ES6.

ECMAScript 2015 = ES-6.

Хорошо, мы понимаем его историю

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

Мы можем увидеть браузеры, поддерживаемые let и const, на сайте http://kangax.github.io/compat-table/es6/.

Вы можете сказать: «Хорошо, каждый год появляются новые функции, и каждый браузер, не поддерживающий новые функции, что мне делать? ”

Хорошо, хороший вопрос 😊 В этой ситуации в игру вступает Babel

«Babel - это транспилятор JavaScript, который преобразует Edge JavaScript в простой старый JavaScript ES5, который может работать в любом браузере ( даже старые) ».

[1, 2, 3] .map (n = ›n + 1);

Он будет скомпилирован в:

[1, 2, 3] .map (функция (n) {
return n + 1;
});

Вы можете узнать больше на сайте Babel. Https://babeljs.io/

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

Область по существу означает, где эти переменные доступны для использования.

Глобальный охват

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

Объем функции

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

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

Область действия блока - это часть между фигурными скобками {}. (если, иначе, для)

Итак, мы готовы. Таааааааааааааааааааааааааааааааааааааааааааааааууу прыгну

Var

Var имеет глобальную область видимости или функцию. Она имеет глобальную область видимости, когда переменная var объявляется вне функции. Если это глобальная область видимости, это означает доступность для всего окна.

Посмотрим на примеры

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

Популярный пример:

Значение переменной можно будет изменить позже.

Переменную можно переопределить.

Подъем вар

И последнее: подъем

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

Переменные Var инициализируются значением undefined во время фазы «только для чтения».

Хорошо, что это значит?

Неопределенный и неопределенный - это не одно и то же:

не определено предполагает, что переменная вообще не существует.
undefined означает, что ваш интерпретатор выделил память для этой переменной, но ей еще не было присвоено значение

Пусть

Let предпочтительнее для объявления переменных. Это неудивительно, так как объявление var стало улучшенным.

Хорошо, давайте посмотрим на примеры:
значение переменной можно будет изменить позже:

Пусть можно определить только один раз.

Однако, если одна и та же переменная определена в разных областях, ошибки не возникнет.

хорошо, вы можете спросить: «хммм, ладно, круто, но почему здесь нет ошибки?»

Хороший вопрос. Это потому, что обе они рассматриваются как разные переменные, потому что имеют разные области действия.

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

Пусть - область действия блока. Блок кода - это что-нибудь между {}. Это означает, что if / else и циклы for являются блоками кода.

Один интересный пример

Подъем аренды

Как и var, переменные let поднимаются в верхнюю часть своей области видимости. Однако, в отличие от var, вызов переменной let перед ее объявлением и назначением вызовет неопределенную ошибку. Итак, пусть переменные поднимаются , но не инициализируются. Это означает, что переменным let не присваивается значение undefined. Мы называем это временной мертвой зоной.

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

Const

Допустим, у вас есть какие-то переменные данных, и их нельзя менять. Тут нам на помощь приходит const. Действительно слава богу, разработчики создали const. Это действительно полезно. Вы увидите это в своих будущих проектах.

Объявления const имеют заблокированную область видимости. Как и объявления let, объявления const доступны только в том блоке, в котором они были объявлены.

const нельзя обновить или повторно объявить.

Его можно изменить, когда само присвоенное значение имеет форму объекта.

Подъем const

Заключение

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

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

Так что пишите чистый и безопасный код🙂

Большое спасибо за чтение этой статьи. Надеюсь, это было вам полезно.

Пока,

Удачного кодирования.