Fixed translation and typos (#25328)

pull/25350/head^2
Nikita Rudenko 2018-12-12 19:38:18 +02:00 committed by Gregory Gubarev
parent b15a2c3471
commit f5e5e7cd81
1 changed files with 3 additions and 3 deletions

View File

@ -3,14 +3,14 @@ id: 587d7b87367417b2b2512b40
title: Compare Scopes of the var and let Keywords
challengeType: 1
videoUrl: ''
localeTitle: Сравните области действия переменных var и let
localeTitle: Сравнение области действия переменных var и let
---
## Description
<section id="description"> Когда вы объявляете переменную с ключевым словом <code>var</code> , она объявляется глобально или локально, если объявляется внутри функции. Ключевое слово <code>let</code> ведет себя аналогично, но с некоторыми дополнительными функциями. Когда вы объявляете переменную с ключевым словом <code>let</code> внутри блока, оператора или выражения, его область действия ограничена этим блоком, оператором или выражением. Например: <blockquote> var numArray = []; <br> для (var i = 0; i &lt;3; i ++) { <br> numArray.push (я); <br> } <br> console.log (Numarray); <br> // возвращает [0, 1, 2] <br> console.log); <br> // возвращает 3 </blockquote> С ключевым словом <code>var</code> <code>i</code> объявляется глобально. Поэтому, когда <code>i++</code> выполняется, он обновляет глобальную переменную. Этот код похож на следующий: <blockquote> var numArray = []; <br> var i; <br> для (i = 0; i &lt;3; i ++) { <br> numArray.push (я); <br> } <br> console.log (Numarray); <br> // возвращает [0, 1, 2] <br> console.log); <br> // возвращает 3 </blockquote> Такое поведение вызовет проблемы, если вы должны были создать функцию и сохранить ее для последующего использования внутри цикла for, который использует переменную <code>i</code> . Это связано с тем, что хранимая функция всегда будет ссылаться на значение обновленной глобальной переменной <code>i</code> . <blockquote> var printNumTwo; <br> для (var i = 0; i &lt;3; i ++) { <br> if (i === 2) { <br> printNumTwo = function () { <br> return i; <br> }; <br> } <br> } <br> console.log (printNumTwo ()); <br> // возвращает 3 </blockquote> Как вы можете видеть, <code>printNumTwo()</code> печатает 3, а не 2. Это связано с тем, что значение, присвоенное <code>i</code> было обновлено, и <code>printNumTwo()</code> возвращает глобальный <code>i</code> а не значение, которое <code>i</code> имел, когда функция была создана в цикле for. Ключевое слово <code>let</code> не следует этому поведению: <blockquote> «использовать строгий»; <br> let printNumTwo; <br> для (пусть i = 0; i &lt;3; i ++) { <br> if (i === 2) { <br> printNumTwo = function () { <br> return i; <br> }; <br> } <br> } <br> console.log (printNumTwo ()); <br> // возвращает 2 <br> console.log (я); <br> // возвращает «i не определен» </blockquote> <code>i</code> не определен, потому что он не был объявлен в глобальной области. Он объявляется только в инструкции цикла for. <code>printNumTwo()</code> вернула правильное значение, потому что три разные переменные <code>i</code> с уникальными значениями (0, 1 и 2) были созданы ключевым словом <code>let</code> в цикле. </section>
<section id="description"> Когда вы объявляете переменную с ключевым словом <code>var</code> , она объявляется глобально или локально, если объявляется внутри функции. Ключевое слово <code>let</code> ведет себя аналогично, но с некоторыми дополнительными особенностями. Когда вы объявляете переменную с ключевым словом <code>let</code> внутри блока, оператора или выражения, его область действия ограничена этим блоком, оператором или выражением. Например: <blockquote> var numArray = []; <br> for (var i = 0; i &lt;3; i++) { <br> numArray.push(i); <br> } <br> console.log (numArray); <br> // возвращает [0, 1, 2] <br> console.log(i); <br> // возвращает 3 </blockquote> С ключевым словом <code>var</code> переменная <code>i</code> объявляется глобально. Поэтому, когда выполняется <code>i++</code> , обновляется глобальная переменная. Этот код похож на следующий: <blockquote> var numArray = []; <br> var i; <br> for (i = 0; i &lt;3; i++) { <br> numArray.push(i); <br> } <br> console.log (numArray); <br> // возвращает [0, 1, 2] <br> console.log(i); <br> // возвращает 3 </blockquote> Такое поведение вызовет проблемы, если вы должны были создать функцию и сохранить ее для последующего использования внутри цикла for, который использует переменную <code>i</code> . Это связано с тем, что хранимая функция всегда будет ссылаться на значение обновленной глобальной переменной <code>i</code> . <blockquote> var printNumTwo; <br> for var i = 0; i &lt;3; i ++) { <br> if (i === 2) { <br> printNumTwo = function () { <br> return i; <br> }; <br> } <br> } <br> console.log (printNumTwo ()); <br> // возвращает 3 </blockquote> Как вы можете видеть, <code>printNumTwo()</code> печатает 3, а не 2. Это связано с тем, что значение, присвоенное <code>i</code> было обновлено, и <code>printNumTwo()</code> возвращает глобальный <code>i</code> , а не значение, которое <code>i</code> имел, когда функция была создана в цикле for. Ключевое слово <code>let</code> не следует этому поведению: <blockquote> «use strict»; <br> let printNumTwo; <br> for (let i = 0; i &lt;3; i ++) { <br> if (i === 2) { <br> printNumTwo = function () { <br> return i; <br> }; <br> } <br> } <br> console.log (printNumTwo ()); <br> // возвращает 2 <br> console.log (я); <br> // возвращает «i не определен» </blockquote> <code>i</code> не определен, потому что он не был объявлен в глобальной области. Он объявляется только в объявлении цикла for. <code>printNumTwo()</code> вернула правильное значение, потому что три разные переменные <code>i</code> с уникальными значениями (0, 1 и 2) были созданы ключевым словом <code>let</code> в цикле. </section>
## Instructions
<section id="instructions"> Исправьте код, чтобы <code>i</code> объявлял в выражении if отдельную переменную, чем <code>i</code> объявленный в первой строке функции. Не забудьте использовать ключевое слово <code>var</code> любом месте вашего кода. Это упражнение предназначено для иллюстрации разницы между тем, как <code>var</code> и <code>let</code> ключевыми словами назначить область для объявленных переменных. При программировании функции, аналогичной той, которая используется в этом упражнении, часто лучше использовать разные имена переменных, чтобы избежать путаницы. </section>
<section id="instructions"> Исправьте код, чтобы переменная <code>i</code> внутри if-выражения была отдельной переменной от <code>i</code> объявленной в первой строке функции. Не забудьте использовать ключевое слово <code>var</code> в любом месте вашего кода. Это упражнение предназначено для иллюстрации разницы между ключевыми словами <code>var</code> и <code>let</code> и область видимости объявленных переменных. При написании функций, аналогичной той, что используется в этом упражнении, часто лучше использовать разные имена переменных, чтобы избежать путаницы. </section>
## Tests
<section id='tests'>