Fixed incorrect translation of the word closure (#22906)

This commit is contained in:
Haqverdi Behbudov
2018-11-19 22:12:05 +04:00
committed by Gregory Gubarev
parent 8dfe458197
commit d605db1769

View File

@ -1,10 +1,10 @@
---
title: Closures
localeTitle: Затворы
localeTitle: Замыкания
---
# Затворы
# Замыкания
Закрытие представляет собой комбинацию функции и лексической среды (области), в которой была объявлена ​​эта функция. Закрытие - это фундаментальное и мощное свойство Javascript. В этой статье обсуждаются «как» и «почему» о закрытии:
Замыкания представляет собой комбинацию функции и лексической среды (области), в которой была объявлена ​​эта функция. Закрытие - это фундаментальное и мощное свойство Javascript. В этой статье обсуждаются «как» и «почему» о закрытии:
### пример
@ -49,7 +49,7 @@ function by(propName) {
const arr_sorted = arr_.sort(by('height')); // [ { name: 'nicholas', height: 66 }, { name: 'rob', height: 70 },{ name: 'joe', height: 72 } ]
```
Закрытие «запоминает» среду, в которой она была создана. Эта среда состоит из любых локальных переменных, которые были в области видимости на момент создания закрытия.
Замыкания «запоминает» среду, в которой она была создана. Эта среда состоит из любых локальных переменных, которые были в области видимости на момент создания замыкания.
```js
function outside(num) {
@ -66,7 +66,7 @@ function outside(num) {
remember2(); // This now executes the function 'inside' which console.logs(rememberedVar) => 9
```
Закрытие полезно, потому что они позволяют вам «запоминать» данные, а затем позволяют работать с этими данными через возвращаемые функции. Это позволяет javascript эмулировать частные методы, которые находятся на других языках программирования. Частные методы полезны для ограничения доступа к коду, а также для управления глобальным пространством имен.
Замыкания полезно, потому что они позволяют вам «запоминать» данные, а затем позволяют работать с этими данными через возвращаемые функции. Это позволяет javascript эмулировать частные методы, которые находятся на других языках программирования. Частные методы полезны для ограничения доступа к коду, а также для управления глобальным пространством имен.
### Частные переменные и методы
@ -93,11 +93,11 @@ const bankAccount = (initialBalance) => {
account.deposit(10); // 110
```
В этом примере мы не сможем получить доступ к `balance` из любой точки вне функции `bankAccount` , а это значит, что мы только что создали приватную переменную. Где закрытие? Ну, подумайте о том, что `bankAccount()` . Он фактически возвращает объект с кучей функций внутри него, и все же, когда мы вызываем `account.getBalance()` , функция может «запомнить» свою начальную ссылку на `balance` . Это сила закрытия, когда функция «запоминает» ее лексическую область (область времени компиляции), даже если функция выполняется вне этой лексической области.
В этом примере мы не сможем получить доступ к `balance` из любой точки вне функции `bankAccount` , а это значит, что мы только что создали приватную переменную. Где закрытие? Ну, подумайте о том, что `bankAccount()` . Он фактически возвращает объект с кучей функций внутри него, и все же, когда мы вызываем `account.getBalance()` , функция может «запомнить» свою начальную ссылку на `balance` . Это сила замыкания, когда функция «запоминает» ее лексическую область (область времени компиляции), даже если функция выполняется вне этой лексической области.
**Эмуляция переменных с блочной областью.**
В Javascript не было понятия переменных с блочным диапазоном. Это означает, что при определении переменной внутри forloop, например, эта переменная видима также снаружи forloop. Итак, как могут закрытия помочь нам решить эту проблему? Давайте взглянем.
В Javascript не было понятия переменных с блочным диапазоном. Это означает, что при определении переменной внутри forloop, например, эта переменная видима также снаружи forloop. Итак, как могут замыкания помочь нам решить эту проблему? Давайте взглянем.
```javascript
var funcs = [];
@ -148,7 +148,7 @@ const bankAccount = (initialBalance) => {
Как и в предыдущем примере, вы можете создавать функции, которые возвращают литералы объектов с методами, которые имеют доступ к локальным переменным объекта, не подвергая их воздействию. Таким образом, они становятся частными.
Закрытие также может помочь вам управлять глобальным пространством имен, чтобы избежать столкновений с глобально разделяемыми данными. Обычно все глобальные переменные распределяются между всеми сценариями в вашем проекте, что определенно даст вам много проблем при создании средних и больших программ. Вот почему библиотеки и авторы модулей используют закрытие, чтобы скрыть методы и данные всего модуля. Это называется шаблоном модуля, он использует выражение, вызываемое непосредственно вызываемым, которое экспортирует только определенные функции во внешний мир, что значительно сокращает количество глобальных ссылок.
замыкания также может помочь вам управлять глобальным пространством имен, чтобы избежать столкновений с глобально разделяемыми данными. Обычно все глобальные переменные распределяются между всеми сценариями в вашем проекте, что определенно даст вам много проблем при создании средних и больших программ. Вот почему библиотеки и авторы модулей используют закрытие, чтобы скрыть методы и данные всего модуля. Это называется шаблоном модуля, он использует выражение, вызываемое непосредственно вызываемым, которое экспортирует только определенные функции во внешний мир, что значительно сокращает количество глобальных ссылок.
Вот краткий образец скелета модуля.
@ -169,7 +169,7 @@ var myModule = (function() = {
myModule.method2(); // I am method 2, I am a private variable
```
Закрытие полезно для захвата новых экземпляров частных переменных, содержащихся в «запоминаемой» среде, и к этим переменным можно получить доступ только через возвращаемую функцию или методы.
замыкания полезно для захвата новых экземпляров частных переменных, содержащихся в «запоминаемой» среде, и к этим переменным можно получить доступ только через возвращаемую функцию или методы.
### Дополнительная информация: