JavaScript: Изменение переменной
Само слово «переменная» подсказывает, что её значение может меняться. Это одна из главных причин, почему переменные вообще существуют.
Вот простой пример:
// greeting переводится как «приветствие»
let greeting = "Father!";
console.log(greeting); // => Father!
greeting = "Mother!";
console.log(greeting); // => Mother!Здесь мы сначала записали в переменную одну строку (Father!), потом другую (Mother!). Имя переменной не изменилось, но значение внутри стало другим.
До: greeting ──→ 'Father!'
╳
После: greeting ──→ 'Mother!'Обратите внимание: ключевое слово let пишется только при первом объявлении переменной. При повторном присваивании let уже не нужен — переменная уже существует, мы лишь меняем её значение.
Зачем вообще менять значение?
В реальных программах переменные меняются постоянно. Вот несколько причин:
- Программа реагирует на действия пользователя. Например, пока вы вводите данные в форму на сайте, переменные, которые эти данные содержат, в этот момент постоянно обновляются.
- Промежуточные результаты. Часто данные проходят через серию преобразований, и на каждом этапе переменная обновляется новым значением. Подобный механизм даже есть в калькуляторах, когда промежуточные значения сохраняются с помощью клавиш
m+илиm-. - Хранение состояния. Если вы пишете игру, то положение персонажа, его здоровье, счёт и текущий уровень являются переменными, которые постоянно меняются.
const не меняется
Не каждую переменную можно переприсвоить. Если переменная объявлена через const, её значение менять нельзя:
const greeting = "Father!";
greeting = "Mother!"; // TypeError: Assignment to constant variable.Поэтому для значений, которые будут меняться, используют let, а для постоянных — const. Так работает большинство современных языков программирования: значение, которое не должно меняться, помечают отдельно.
Почему это важно
Переменные представляют собой гибкий способ хранить данные, которые могут изменяться в процессе выполнения программы. Благодаря этому можно писать программы, которые ведут себя по-разному в зависимости от условий, действий пользователя или результатов вычислений.
Но у гибкости есть и обратная сторона. Иногда сложно сразу понять, что именно записано в переменную в тот или иной момент времени. Разработчику приходится отслеживать, где и как она изменилась, особенно если код длинный.
Именно это делают во время отладки: пытаются разобраться, почему программа работает иначе, чем задумано. Проверяют значения переменных, отслеживают порядок выполнения кода, ищут, где что-то пошло не так.
Задание
Статус заказа обновляется по мере его продвижения. В начале заказ находится в статусе 'in transit', затем переходит в статус 'delivered'.
В упражнении уже определена переменная deliveryStatus со значением 'in transit'. Переопределите её значение на 'delivered' и выведите на экран.
Пример переопределения переменной:
let someVar = "старое значение";
someVar = "новое значение";
console.log(someVar); // => новое значениеJavaScript: Изменение переменной
Само слово «переменная» подсказывает, что её значение может меняться. Это одна из главных причин, почему переменные вообще существуют.
Вот простой пример:
// greeting переводится как «приветствие»
let greeting = "Father!";
console.log(greeting); // => Father!
greeting = "Mother!";
console.log(greeting); // => Mother!Здесь мы сначала записали в переменную одну строку (Father!), потом другую (Mother!). Имя переменной не изменилось, но значение внутри стало другим.
До: greeting ──→ 'Father!'
╳
После: greeting ──→ 'Mother!'Обратите внимание: ключевое слово let пишется только при первом объявлении переменной. При повторном присваивании let уже не нужен — переменная уже существует, мы лишь меняем её значение.
Зачем вообще менять значение?
В реальных программах переменные меняются постоянно. Вот несколько причин:
- Программа реагирует на действия пользователя. Например, пока вы вводите данные в форму на сайте, переменные, которые эти данные содержат, в этот момент постоянно обновляются.
- Промежуточные результаты. Часто данные проходят через серию преобразований, и на каждом этапе переменная обновляется новым значением. Подобный механизм даже есть в калькуляторах, когда промежуточные значения сохраняются с помощью клавиш
m+илиm-. - Хранение состояния. Если вы пишете игру, то положение персонажа, его здоровье, счёт и текущий уровень являются переменными, которые постоянно меняются.
const не меняется
Не каждую переменную можно переприсвоить. Если переменная объявлена через const, её значение менять нельзя:
const greeting = "Father!";
greeting = "Mother!"; // TypeError: Assignment to constant variable.Поэтому для значений, которые будут меняться, используют let, а для постоянных — const. Так работает большинство современных языков программирования: значение, которое не должно меняться, помечают отдельно.
Почему это важно
Переменные представляют собой гибкий способ хранить данные, которые могут изменяться в процессе выполнения программы. Благодаря этому можно писать программы, которые ведут себя по-разному в зависимости от условий, действий пользователя или результатов вычислений.
Но у гибкости есть и обратная сторона. Иногда сложно сразу понять, что именно записано в переменную в тот или иной момент времени. Разработчику приходится отслеживать, где и как она изменилась, особенно если код длинный.
Именно это делают во время отладки: пытаются разобраться, почему программа работает иначе, чем задумано. Проверяют значения переменных, отслеживают порядок выполнения кода, ищут, где что-то пошло не так.
Задание
Статус заказа обновляется по мере его продвижения. В начале заказ находится в статусе 'in transit', затем переходит в статус 'delivered'.
В упражнении уже определена переменная deliveryStatus со значением 'in transit'. Переопределите её значение на 'delivered' и выведите на экран.
Пример переопределения переменной:
let someVar = "старое значение";
someVar = "новое значение";
console.log(someVar); // => новое значениеВаше упражнение проверяется по этим тестам
// @ts-check
import { expect, test, vi } from "vitest";
test("change", async () => {
const consoleLogSpy = vi.spyOn(console, "log");
await import("./index.js");
const firstArg = consoleLogSpy.mock.calls.join("\n");
expect(firstArg).toBe("delivered");
});Решение учителя откроется через:
20:00
