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
