|
| 1 | +Переменные — один из базовых инструментов программирования. С их помощью программы запоминают и используют данные. |
1 | 2 |
|
2 | | -Представьте себе задачу: нам нужно напечатать на экран фразу *Father!* два раза или даже пять раз. Эту задачу можно решить в лоб: |
| 3 | +Рассмотрим пример. |
3 | 4 |
|
4 | 5 | ```javascript |
5 | | -console.log('Father!'); |
6 | | -console.log('Father!'); |
| 6 | +let greeting = 'Father!'; |
| 7 | +console.log(greeting); // => Father! |
7 | 8 | ``` |
8 | 9 |
|
9 | | -В простейшем случае так и стоит поступить, но если фраза *Father!* начнет использоваться чаще, да еще и в разных частях программы, то придется ее везде повторять. Проблемы с таким подходом начнутся тогда, когда понадобится изменить нашу фразу, а такое происходит довольно часто. Нам придется найти все места, где использовалась фраза *Father!*, и выполнить необходимую замену. А можно поступить по-другому. Вместо копирования нашего выражения достаточно создать переменную с этой фразой. |
| 10 | +Мы **определили переменную** с именем `greeting` и присвоили ей значение `'Father!'`. Теперь вместо строки `'Father!'` можно использовать имя `greeting`. |
10 | 11 |
|
11 | 12 | ```javascript |
12 | | -// greeting - переводится как приветствие |
13 | 13 | let greeting = 'Father!'; |
14 | 14 | console.log(greeting); // => Father! |
15 | 15 | console.log(greeting); // => Father! |
16 | 16 | ``` |
17 | 17 |
|
18 | | -Переменная указывает на данные, которые были в неё записаны. Благодаря этому, данные можно использовать многократно без необходимости их постоянно дублировать. Сама переменная создается и наполняется данными (инициализируется) с помощью инструкции `let greeting = 'Father!'`. |
| 18 | +Значение переменной берётся в момент обращения к ней. |
19 | 19 |
|
20 | | -Для имени переменной используется любой набор допустимых символов, к которым относятся буквы английского алфавита, цифры, а также знаки *_* и *$*. При этом цифру нельзя ставить в начале. Имена переменных регистрозависимы, то есть имя `hello` и имя `heLLo` - это два разных имени, а значит и две переменные. Регистр в JavaScript имеет важное значение, никогда не забывайте про него. |
| 20 | +## let и const |
21 | 21 |
|
22 | | -Переменную не обязательно инициализировать данными во время объявления. Иногда бывает нужно ее создать, а наполняться она будет потом: |
23 | | - |
24 | | -```javascript |
25 | | -let greeting; |
| 22 | +В JavaScript переменные объявляются двумя способами: |
26 | 23 |
|
27 | | -// Использование |
28 | | -console.log(greeting); // undefined |
| 24 | +- `let` — для значений, которые могут меняться. |
| 25 | +- `const` — для значений, которые не будут меняться (константы). |
29 | 26 |
|
30 | | -// Изменение переменной в следующем уроке |
| 27 | +```javascript |
| 28 | +let currentUser = 'Alice'; // может поменяться позже |
| 29 | +const maxAttempts = 3; // никогда не изменится |
31 | 30 | ``` |
32 | 31 |
|
33 | | -Объявленная, но не инициализированная переменная, содержит внутри себя значение `undefined`. Это специальное значение, используемое тогда, когда ничего не определено. |
| 32 | +Если не знаете, будет ли значение меняться — используйте `const`. Это хорошая практика. |
34 | 33 |
|
35 | | -Количество создаваемых переменных ничем не ограничено, большие программы содержат десятки и сотни тысяч имен переменных: |
| 34 | +## Правила именования |
36 | 35 |
|
37 | | -```javascript |
38 | | -let greeting1 = 'Father!'; |
39 | | -console.log(greeting1); |
40 | | -console.log(greeting1); |
| 36 | +Имена переменных в JavaScript: |
41 | 37 |
|
42 | | -let greeting2 = 'Mother!'; |
43 | | -console.log(greeting2); |
44 | | -console.log(greeting2); |
45 | | -``` |
| 38 | +- Могут содержать буквы, цифры, `_` и `$`. |
| 39 | +- Не могут начинаться с цифры. |
| 40 | +- Чувствительны к регистру: `greeting` и `Greeting` — разные переменные. |
46 | 41 |
|
47 | | -Для удобства анализа программы, переменные принято создавать как можно ближе к тому месту, где они используются. |
| 42 | +Имена по стилю записываются в lowerCamelCase: `firstName`, `maxLoginAttempts`. |
0 commit comments