|
73 | 73 |
|
74 | 74 | В то время как `foo` и `i` — локальные переменные в области видимости функции `test`, присвоение `bar` переопределит значение одноимённой глобальной переменной. |
75 | 75 |
|
76 | | -### Высасывание |
| 76 | +### Всплытие |
77 | 77 |
|
78 | | -JavaScript **высасывает** определения. Это значит, что оба определения с использованием `var` и определение `function` будут перенесены наверх заключающей их области видимости. |
| 78 | +В JavaScript действует механизм **всплытия** определения. Это значит, что оба определения с использованием `var` и определение `function` будут перенесены наверх заключающей их области видимости. |
79 | 79 |
|
80 | 80 | bar(); |
81 | 81 | var bar = function() {}; |
@@ -116,16 +116,16 @@ JavaScript **высасывает** определения. Это значит, |
116 | 116 |
|
117 | 117 | bar(); // вылетает с ошибкой TypeError, |
118 | 118 | // поскольку bar всё ещё 'undefined' |
119 | | - someValue = 42; // присвоения не подвержены высасыванию |
| 119 | + someValue = 42; // присвоения не подвержены всплытию |
120 | 120 | bar = function() {}; |
121 | 121 |
|
122 | 122 | test(); |
123 | 123 |
|
124 | 124 | Потерянная область видимости блока не только переместит операторы `var` вовне циклов и их тел, но и сделает результаты некоторых конструкций с `if` неинтуитивными. |
125 | 125 |
|
126 | | -В исходном коде оператор `if` изменял *глобальную переменную* `goo`, когда, как оказалось, он изменяет *локальную переменную* — в результате работы высасывания. |
| 126 | +В исходном коде оператор `if` изменял *глобальную переменную* `goo`, когда, как оказалось, он изменяет *локальную переменную* — в результате работы всплытия. |
127 | 127 |
|
128 | | -Если вы не знакомы с *высасываниями*, то можете посчитать, что нижеприведённый код должен породить |
| 128 | +Если вы не знакомы со *всплытием*, то можете посчитать, что нижеприведённый код должен породить |
129 | 129 | `ReferenceError`. |
130 | 130 |
|
131 | 131 | // проверить, проинициализована ли SomeImportantThing |
@@ -162,7 +162,7 @@ JavaScript **высасывает** определения. Это значит, |
162 | 162 |
|
163 | 163 | ### Пространства имён |
164 | 164 |
|
165 | | -Нередкое последствие наличия только одного глобального пространства имён — проблемы с перекрытием имён переменных. В JavaScript эту проблему легко избежать, используя *анонимные обёртки*. |
| 165 | +Нередкое последствие наличия только одного глобального пространства имён — проблема с перекрытием имён переменных. В JavaScript эту проблему легко избежать, используя *анонимные обёртки*. |
166 | 166 |
|
167 | 167 | (function() { |
168 | 168 | // самостоятельно созданное "пространство имён" |
|
0 commit comments