С 2015 года JavaScript значительно улучшился.

Пользоваться им сейчас намного приятнее, чем когда-либо.

В этой статье мы рассмотрим переменные JavaScript.

let и const в заголовках петель

Мы можем использовать let и const в заголовках цикла с циклами for, for-in и for-of.

С помощью цикла for мы можем написать:

const arr = [];
for (let i = 0; i < 3; i++) {
  arr.push(i);
}

Мы можем написать use let, чтобы сделать i доступным только в блоке.

Это лучше, чем var, который делает цикл доступным внутри всей функции:

const arr = [];
for (var i = 0; i < 3; i++) {
  arr.push(i);
}

const работает аналогично var, но мы не можем изменить значение i.

Например, мы не можем написать:

for (const i = 0; i < 3; i++) {
  console.log(i);
}

поскольку мы меняем значение i.

Мы также можем использовать цикл for-of, чтобы получить элемент из цикла.

Например, мы можем написать:

const arr = [];
for (let i of [0, 1, 2]) {
  arr.push(i);
}

чтобы получить значение.

Мы также можем использовать const, поскольку мы не меняем переменную записи массива:

const arr = [];
for (const i of [0, 1, 2]) {
  arr.push(i);
}

Переменная var сделает переменную доступной вне цикла:

const arr = [];
for (var i of [0, 1, 2]) {
  arr.push(() => i);
}

Цикл for-in работает как цикл for-of.

Параметры как переменные

Мы можем записывать параметры, которые мы let переменные, внутри блоков, если они не пересекаются с параметрами.

Например, мы не можем написать:

function func(arg) {
  let arg;
}

поскольку оба args имеют одинаковую область видимости.

Мы получим ошибку «Uncaught SyntaxError: идентификатор« arg »уже объявлен».

Однако мы можем написать:

function func(arg) {
  {
    let arg;
  }
}

поскольку arg находится в блоке.

Однако с var действительны оба:

function func(arg) {
  var arg;
}
function func(arg) {
  { 
    var arg;
  }
}

Они оба ничего не делают и arg в параметре и блоке имеют одинаковую область видимости.

Если у нас есть параметры по умолчанию, они рассматриваются как параметры.

Например, мы можем написать:

function foo(x = 1, y = x) {
  return [x, y];
}

поскольку x определен до y.

Но мы не можем написать:

function bar(x = y, y = 2) {
  return [x, y];
}

поскольку y не определен, когда мы присвоили его x.

Поэтому мы рассматриваем параметры по умолчанию как let переменные.

Они не видят размаха тела.

Например, если у нас есть:

const foo = 'bar';
function bar(func = x => foo) {
  const foo = 'baz';
  console.log(func()); 
}
bar()

Тогда получаем bar.

Функция в параметре функции принимает foo извне и возвращает его.

foo внутри bar имеет свой собственный прицел.

Заключение

Мы можем использовать let и const в заголовках и функциях циклов.

Параметры по умолчанию также рассматриваются как let переменные.

JavaScript на простом английском языке

Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал на YouTube в Decoded!