Далее на странице...
Для начала нужно познакомится с правилами работы с именами переменных. Об этом читайте здесь.
Теперь поговорим о том, как происходит объявление переменных в JavaScript.
До выхода стандарта ES6 при создании переменных/для их объявления использовалось ключевое слово var - об этом здесь. Но это устаревший способ объявления переменных.
Как это происходит сейчас? Далее о ключевых словах let, const и var и отличиях между ними.
Объявление переменных в ES6
В стандарте ES6 объявление переменных происходит с использованием ключевых слов let или const.
Ключевое слово let или const --> Имя переменной --> Знак присваивания "=" --> Значение переменной
Пример 1.1
let number = 5;
const leftBorderWidth = 2;
- ключевое слово let - обозначает, что перед нами изменяемая переменная.
- ключевое слово const - обозначает, что перед нами не изменяемая переменная (от слова constant - константа).
В JavaScript хорошим тоном является использование ключевого слова const везде, где это возможно.
Здесь нужно отметить одну особенность языка JavaScript. Дело в том, что прямых констант здесь не бывает. То есть если говорить о переменной объявленной при помощи ключевого слова const, то это не такая уж и константа.
Сделаем запись следующего вида (объявим при помощи ключевого слова const объект и сразу же изменим значение его свойства):
Пример 1.2
const obj = {
a: 50
};
console.log(obj);
obj.a = 20;
console.log(obj);
В результате изменения прошли успешно. Но изменить значение переменной, объявленной при помощи ключевого слова const (см. пример 1.1) const leftBorderWidth = 2; - не получится.
О том, что такое объект и обо всех тонкостях работы с ключевыми словами let и const речь будет идти позже.
Устаревший способ объявления переменной var
Устаревший вариант объявления переменных при помощи ключевого слова var.
var name = 'Ivan';
Этотого способа объявления переменных стоит избегать. Не нужно его использовать в своем коде.
Разберемся почему. Сравним использование ключевого слова var и let. И для этого "шагнем" немного вперед.
Итак, переменную объявленную при помощи ключевого слова var, как и let-переменную можно перезаписывать/менять ее значение. В этом их схожесть. Но...
Переменная существует до того, как она объявлена в коде. И соответственно видна она везде.
Это может звучать не понятно, поэтому рассмотрим пример.
Пример 2.1
console.log(name);
var name = 'Ivan';
Результат
undefined
В примере мы пробовали вывести в консоль переменную name до того, как она была объявлена при помощи ключевого слова . И в результате мы увидели undefined. И хотя это не настоящее значение переменной name (это неопределенное значение - об этом здесь), но оно есть заранее. До объявления переменной. И это не правильно. В этом нет последовательности/нет логики. Такого быть не должно!
Пробуем тоже самое сделать в случае с ключевым словом let.
Пример 2.2
console.log(number);
let number = 5;
Результат
Cannot access 'number' before initialization
В результате мы увидим ошибку и сообщение о том, что нет доступа к переменной number пока она не объявлена/не инициализированна. Этот код НЕ работает и это правильно.
Такое поведение переменной объявленной при помощи ключевого слова var называется hoisting или всплытие/поднятие - когда переменные передвигаются выше своей области видимости - до того как были объявлены.
Поэтому правильно для объявления переменных использовать ключевые слова let и const. И в этом случае переменные будут использоваться только после того, как были объявлены.
Это первое глобальное отличие let и const от . И это основная проблема var.
Второе отличие let и const от var
Второе отличие let и const от var заключается в том, что let и const-переменные видны только в блоке кода, ограниченного фигурными скобками.
Пример 3.1
{
let result = 50;
}
console.log(result);
Результат
result is not defined
Переменная result не определена. Тоже самое мы увидим если переменная объявлена при помощи ключевого слова const.
В случае с var все иначе.
Пример 3.2
{
var result = 50;
}
console.log(result);
Результат
50
Здесь мы имеем доступ к переменной, объявленной при помощи ключевого слова var внутри блока кода, ограниченного фигурными скобками.
Есть и другие особенности объявления переменных в JavaScript связанные с циклами. Но об этом немного позже. Когда будет рассматриваться тема функций, то мы пойдем еще глубже и будем говорить о замыканиях.