You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/04-var/article.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,13 +7,13 @@
7
7
2.`const`
8
8
3.`var`
9
9
10
-
`let` и `const` ведут себя одинаково по отношению к Лексическому Окружению, области видимости.
10
+
`let` и `const` ведут себя одинаково по отношению к лексическому окружению, области видимости.
11
11
12
12
Но `var` - это совершенно другой зверь, берущий своё начало с давних времен. Обычно `var` не используется в современных скриптах, но всё ещё может скрываться в старых.
13
13
14
-
Если в данный момент вы не работаете с подобными скриптами, вы можете пропустить или отложить прочтение данной главы, однако, есть шанс, что вы столкнётесь с этим в будущем.
14
+
Если в данный момент вы не работаете с подобными скриптами, вы можете пропустить или отложить прочтение данной главы, однако, есть шанс, что вы столкнётесь с `var` в будущем.
15
15
16
-
На первый взгляд, поведение `var`подобно`let`. Например, объявление переменной:
16
+
На первый взгляд, поведение `var`похоже на`let`. Например, объявление переменной:
17
17
18
18
```js run
19
19
functionsayHi() {
@@ -37,7 +37,7 @@ alert(phrase); // Ошибка: phrase не определена
37
37
38
38
```js run
39
39
if (true) {
40
-
var test =true; // используем "var" вместо "let"
40
+
var test =true; // используем var вместо let
41
41
}
42
42
43
43
*!*
@@ -51,7 +51,7 @@ alert(test); // true, переменная существует за блоко
51
51
52
52
```js run
53
53
if (true) {
54
-
let test =true; // используем "let"
54
+
let test =true; // используем let
55
55
}
56
56
57
57
*!*
@@ -67,7 +67,7 @@ for (var i = 0; i < 10; i++) {
67
67
}
68
68
69
69
*!*
70
-
alert(i); // 10, переменная "i" доступна вне цикла, т.к. является глобальной переменной
70
+
alert(i); // 10, переменная i доступна вне цикла, т.к. является глобальной переменной
71
71
*/!*
72
72
```
73
73
@@ -83,7 +83,7 @@ function sayHi() {
83
83
}
84
84
85
85
sayHi();
86
-
alert(phrase); // Ошибка: phrase не определена (видна в консоли разработчика)
86
+
alert(phrase); // Ошибка: phrase не определена (видна в консоли разработчика)
87
87
```
88
88
89
89
Как видим, `var` выходит за пределы блоков `if`, `for` и подобных. Это происходит потому, что на заре развития JavaScript блоки кода не имели лексического окружения. Поэтому можно сказать что, `var` - это пережиток прошлого.
@@ -145,7 +145,7 @@ sayHi();
145
145
146
146
В примере выше `if (false)` условие никогда не выполнится. Но это никаким образом не препятствует созданию переменной `var phrase`, которая находится внутри него, поскольку объявления `var` "всплывают" в начало функции. Т.е. в момент присвоения значения `(*)` переменная уже существует.
147
147
148
-
**Объявления переменных "всплывают", но присваивания значений - нет."**
148
+
**Объявления переменных "всплывают", но присваивания значений - нет.**
149
149
150
150
Это проще всего продемонстрировать на примере:
151
151
@@ -166,7 +166,7 @@ sayHi();
166
166
1. Объявление переменной `var`
167
167
2. Присвоение значения в переменную `=`.
168
168
169
-
Объявление переменной обрабатывается в начале выполнения функции ("всплытие"), однако присвоение значения всегда происходит в той строке кода, где оно указано. Т.е. код выполняется по следующему сценарию:
169
+
Объявление переменной обрабатывается в начале выполнения функции ("всплывает"), однако присвоение значения всегда происходит в той строке кода, где оно указано. Т.е. код выполняется по следующему сценарию:
0 commit comments