> For the complete documentation index, see [llms.txt](https://thedvlpr.gitbook.io/javascript-for-dummies/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://thedvlpr.gitbook.io/javascript-for-dummies/peremennye-v-javascript.md).

# Переменные в JavaScript

[![Generic badge](https://img.shields.io/badge/JavaScript-%D0%B4%D0%BB%D1%8F%20%D1%82%D1%83%D0%BF%D1%8B%D1%85-green.svg)](https://img.shields.io/badge/JavaScript-%D0%B4%D0%BB%D1%8F%20%D1%82%D1%83%D0%BF%D1%8B%D1%85-green.svg)

![](/files/-M8V_QFayMk_VuEr2TRU)

Начну с примера: представь, нам нужно сделать простое математическое действие – число `165` `умножить (*)` на `734`. Затем полученное произведение нужно `умножить (*)` на `3`, затем `поделить (/)` на `5`, и каждое полученное значение в результате этих действий нам нужно вывести пользователю.

**Самый простой вариант решения задачи**:

```javascript
console.log(165 * 734); 
console.log(165 * 734 * 3); 
console.log((165 * 734) / 5);
```

Фактически, мы сделали то, что требовалось по заданию. Тебя не смущает, что каждый раз мы повторяем одно и то же действие в каждом выражении? Если, не заметил, то мы каждый раз заставляем компьютер вычислять произведение `2-ух чисел`. Твоему компуктеру это, конечно же, раз плюнуть, но представь, если там будет другое повторяющееся действие, которое уже будет занимать не `0.000000000000000001 миллисекунды` на выполнение, а `3 сек`?

Получится, что выполнение программы будет достаточно долгим процессом. Как же это можно оптимизировать? Как раз в этом нам на помощь приходят **переменные**.

Что же такое переменная? **Переменная** – *это выделенная именованная область в памяти для хранения каких-либо данных*.

Что это значит? А то, что мы можем создать переменную и записать в нее какое-либо значение, это может быть в виде примитивного значения, в виде строки (`string`), числа (`number`), булева значения (`boolean -> true/false`) или значения, полученного в результате вычисления какого-либо выражения.

**Переменная** – *это подписанная маркером коробка, в которую можно что-то положить, а затем при необходимости взять из нее то, что положил в неё ранее*. А если нужно, то даже можно поменять содержимое этой коробки или вообще оставить ее пустой.

![В переменную с именем Name мы записываем значение Maria](/files/-M8V_cZyj1zFYjQdtyNi)

\
Пробуем оптимизировать наш код. Получим следующее:

```javascript
let productNumbers = 165 * 734;
console.log(productNumbers * 3); 
console.log(productNumbers / 5);
```

Как видишь, мы создали переменную с именем `productNumbers` и записали в нее значение произведения. Далее, мы `productNumbers` умножаем на `3`, а следующим действием делим на `5`.

Вся прелесть заключается в том, что значение переменной будет рассчитываться только 1 раз. Т.е., фактически, значением переменной является не само произведение, а результат произведения, т.е.: `121110`. Затем, мы можем обратиться к этой переменной в любой части кода.

Как видишь, код даже немного преобразился, так как стал более читабельным.

Наверное, у тебя возник вопрос, а что это за  `let` перед именем переменной? Это ***объявление переменной***. Вообще, **в JavaScript есть 3 способа объявления переменной**:

```javascript
let productNumbers = 165 * 734;
var productNumbers = 165 * 734;
const productNumbers = 165 * 734;
```

Как видишь, их целых 3 брата акробата. Все они делают одно и то же – говорят твоему компуктеру: **разметь в памяти ячейку с именем** `productNumbers` и **сохрани в неё результат произведения** `165 * 734`.

Чувствую, ты уже задаешься вопросом: «зачем их целых 3 и отличаются ли они чем-то?» Да, различаются. Но об этом в следующем уроке.
