В Javascript (ES6) появились новые способы объявления переменных, помимо var: через let и const. Рассмотрим разницу между данными операторами, особенности и область их применения.
Содержание
- var
- let
- const
var
На сегодняшний день var – это рабочий, но уже устаревший способ объявления переменных. Переменная, объявленная через var, обладает зоной видимости в рамках контекста ее выполнения. Контекст может быть как глобальным, для переменных, объявленных за пределами функции, так и ограничиваться функцией, в пределах которой объявлена переменная.
1 2 3 4 5 6 7 8 9 |
function out() { var a = 1; b = 2; } out(); console.log(b); // "2" console.log(a); // ошибка, т.к. переменная не объявлена за пределами функции |
Переменные var инициализируются при их объявлении, со значением undefined.
1 2 |
alert(a); // undefined var a = 1; |
let
Основное и принципиальное отличие let от var, это то, что область видимости переменной, объявленной через let, ограничивается рамками блока {…}, в пределах которого она объявлена. Т.е. переменная, объявленная внутри цикла for (или while , или внутри оператора if) будет видна только внутри цикла (в блоке кода, следующим за условием).
1 2 3 4 5 6 7 8 9 |
for (var i = 0; i < 3; i++) { // операции } console.log(i) //3, переменная объявлена и за рамками цикла for (let i = 0; i < 3; i++) { // операции } console.log(i) //ошибка, т.к. переменная не объявлена за пределами цикла |
Следует учитывать, что при объявлении через let, каждой итерации соответствует своя переменная,
Также переменные let не доступны до момента их объявления
1 2 |
alert(a); // ошибка, переменная не объявлена let a = 1; |
const
const задает константу, значение константы переопределить нельзя.
1 2 |
const a = 1; a = 999; // ошибка |
Константы, объявленные через const, обладают теми же особенностями, что и let.