fix(curriculum): fix challenges for russian language

This commit is contained in:
Valeriy S
2019-08-28 16:26:13 +03:00
committed by mrugesh
parent a17c3c44aa
commit 12f65a6742
1418 changed files with 39634 additions and 19395 deletions

View File

@@ -2,25 +2,29 @@
id: 587d7b85367417b2b2512b3a
title: Catch Arguments Passed in the Wrong Order When Calling a Function
challengeType: 1
videoUrl: ''
localeTitle: 'Аргументы улова, пропущенные в неправильном порядке при вызове функции'
forumTopicId: 301184
localeTitle: Аргументы улова, пропущенные в неправильном порядке при вызове функции
---
## Description
<section id="description"> Продолжая обсуждение функций вызова, следующая ошибка, на которую следует обратить внимание, - это когда аргументы функции поставляются в неправильном порядке. Если аргументы представляют собой разные типы, такие как функция, ожидающая массив и целое число, это скорее всего вызовет ошибку времени выполнения. Если аргументы одного типа (все целые числа, например), то логика кода не имеет смысла. Обязательно укажите все необходимые аргументы в правильном порядке, чтобы избежать этих проблем. </section>
<section id='description'>
Продолжая обсуждение функций вызова, следующая ошибка, на которую следует обратить внимание, - это когда аргументы функции поставляются в неправильном порядке. Если аргументы представляют собой разные типы, такие как функция, ожидающая массив и целое число, это скорее всего вызовет ошибку времени выполнения. Если аргументы одного типа (все целые числа, например), то логика кода не имеет смысла. Обязательно укажите все необходимые аргументы в правильном порядке, чтобы избежать этих проблем.
</section>
## Instructions
<section id="instructions"> Функция <code>raiseToPower</code> повышает базу до экспоненты. К сожалению, он не называется правильно - исправьте код, так что значение <code>power</code> будет ожидаемым 8. </section>
<section id='instructions'>
Функция <code>raiseToPower</code> повышает базу до экспоненты. К сожалению, он не называется правильно - исправьте код, так что значение <code>power</code> будет ожидаемым 8.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Ваш код должен исправить переменную <code>power</code> чтобы он равнялся 2, поднятому до 3-го уровня, а не 3, поднятому до второго уровня.'
testString: 'assert(power == 8, "Your code should fix the variable <code>power</code> so it equals 2 raised to the 3rd power, not 3 raised to the 2nd power.");'
- text: Ваш код должен использовать правильный порядок аргументов для <code>raiseToPower</code> функции <code>raiseToPower</code> .
testString: 'assert(code.match(/raiseToPower\(\s*?base\s*?,\s*?exp\s*?\);/g), "Your code should use the correct order of the arguments for the <code>raiseToPower</code> function call.");'
- text: Your code should fix the variable <code>power</code> so it equals 2 raised to the 3rd power, not 3 raised to the 2nd power.
testString: assert(power == 8);
- text: Your code should use the correct order of the arguments for the <code>raiseToPower</code> function call.
testString: assert(code.match(/raiseToPower\(\s*?base\s*?,\s*?exp\s*?\);/g));
```
@@ -45,14 +49,20 @@ console.log(power);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function raiseToPower(b, e) {
return Math.pow(b, e);
}
let base = 2;
let exp = 3;
let power = raiseToPower(base, exp);
console.log(power);
```
</section>

View File

@@ -2,25 +2,29 @@
id: 587d7b85367417b2b2512b39
title: Catch Missing Open and Closing Parenthesis After a Function Call
challengeType: 1
videoUrl: ''
forumTopicId: 301185
localeTitle: Поймать не открывать и закрывать скобки после вызова функции
---
## Description
<section id="description"> Когда функция или метод не принимает никаких аргументов, вы можете забыть включить (пустые) открывающие и закрывающие круглые скобки при вызове. Часто время вызова функции сохраняется в переменной для другого использования в вашем коде. Эта ошибка может быть обнаружена путем записи значений переменных (или их типов) в консоль и просмотра того, что для нее задана ссылка на функцию, а не ожидаемое значение, возвращаемое функцией. Переменные в следующем примере отличаются: <blockquote> function myFunction () { <br> возвращение «Ты качаешь!»; <br> } <br> пусть varOne = myFunction; // установить равную функцию <br> пусть varTwo = myFunction (); // установите равную строку «Ты качаешься!» </blockquote></section>
<section id='description'>
Когда функция или метод не принимает никаких аргументов, вы можете забыть включить (пустые) открывающие и закрывающие круглые скобки при вызове. Часто время вызова функции сохраняется в переменной для другого использования в вашем коде. Эта ошибка может быть обнаружена путем записи значений переменных (или их типов) в консоль и просмотра того, что для нее задана ссылка на функцию, а не ожидаемое значение, возвращаемое функцией. Переменные в следующем примере отличаются: <blockquote> function myFunction () { <br> возвращение «Ты качаешь!»; <br> } <br> пусть varOne = myFunction; // установить равную функцию <br> пусть varTwo = myFunction (); // установите равную строку «Ты качаешься!» </blockquote>
</section>
## Instructions
<section id="instructions"> Исправьте код, чтобы <code>result</code> переменной был установлен на значение, возвращаемое из вызова функции <code>getNine</code> . </section>
<section id='instructions'>
Исправьте код, чтобы <code>result</code> переменной был установлен на значение, возвращаемое из вызова функции <code>getNine</code> .
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Ваш код должен исправить <code>result</code> переменной, чтобы он был установлен на число, возвращаемое функцией <code>getNine</code> .'
testString: 'assert(result == 9, "Your code should fix the variable <code>result</code> so it is set to the number that the function <code>getNine</code> returns.");'
- text: Ваш код должен вызывать функцию <code>getNine</code> .
testString: 'assert(code.match(/getNine\(\)/g).length == 2, "Your code should call the <code>getNine</code> function.");'
- text: Your code should fix the variable <code>result</code> so it is set to the number that the function <code>getNine</code> returns.
testString: assert(result == 9);
- text: Your code should call the <code>getNine</code> function.
testString: assert(code.match(/getNine\(\)/g).length == 2);
```
@@ -45,14 +49,20 @@ console.log(result);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function getNine() {
let x = 6;
let y = 3;
return x + y;
}
let result = getNine();
console.log(result);
```
</section>

View File

@@ -2,31 +2,35 @@
id: 587d7b84367417b2b2512b35
title: Catch Misspelled Variable and Function Names
challengeType: 1
videoUrl: ''
forumTopicId: 301186
localeTitle: Поймать имена с ошибкой и имена функций
---
## Description
<section id="description"> Методы <code>console.log()</code> и <code>typeof</code> являются двумя основными способами проверки промежуточных значений и типов вывода программы. Теперь пришло время войти в общие формы, которые берут ошибки. Одна проблема на синтаксическом уровне, с которой быстрые моделисты могут сочувствовать, - это скромная орфографическая ошибка. Транспонированные, отсутствует или неправильно заглавной буквы, символы в имени переменной или функции будут иметь браузер ищет объект, который не существует - и жалуюсь в виде справочной ошибки. Имена переменных и функций JavaScript чувствительны к регистру. </section>
<section id='description'>
Методы <code>console.log()</code> и <code>typeof</code> являются двумя основными способами проверки промежуточных значений и типов вывода программы. Теперь пришло время войти в общие формы, которые берут ошибки. Одна проблема на синтаксическом уровне, с которой быстрые моделисты могут сочувствовать, - это скромная орфографическая ошибка. Транспонированные, отсутствует или неправильно заглавной буквы, символы в имени переменной или функции будут иметь браузер ищет объект, который не существует - и жалуюсь в виде справочной ошибки. Имена переменных и функций JavaScript чувствительны к регистру.
</section>
## Instructions
<section id="instructions"> Исправьте две ошибки орфографии в коде, так что расчет <code>netWorkingCapital</code> работает. </section>
<section id='instructions'>
Исправьте две ошибки орфографии в коде, так что расчет <code>netWorkingCapital</code> работает.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Проверьте правильность написания двух переменных, используемых в расчете netWorkingCapital, вывод консоли должен показать, что «Чистый оборотный капитал: 2».'
testString: 'assert(netWorkingCapital === 2, "Check the spelling of the two variables used in the netWorkingCapital calculation, the console output should show that "Net working capital is: 2".");'
- text: В коде не должно быть экземпляров ошибочных переменных.
testString: 'assert(!code.match(/recievables/g), "There should be no instances of mis-spelled variables in the code.");'
- text: Переменная <code>receivables</code> должна быть объявлена ​​и использована должным образом в коде.
testString: 'assert(code.match(/receivables/g).length == 2, "The <code>receivables</code> variable should be declared and used properly in the code.");'
- text: В коде не должно быть экземпляров ошибочных переменных.
testString: 'assert(!code.match(/payable;/g), "There should be no instances of mis-spelled variables in the code.");'
- text: Переменная <code>payables</code> должна быть объявлена ​​и использована правильно в коде.
testString: 'assert(code.match(/payables/g).length == 2, "The <code>payables</code> variable should be declared and used properly in the code.");'
- text: 'Check the spelling of the two variables used in the netWorkingCapital calculation, the console output should show that "Net working capital is: 2".'
testString: assert(netWorkingCapital === 2);
- text: There should be no instances of mis-spelled variables in the code.
testString: assert(!code.match(/recievables/g));
- text: The <code>receivables</code> variable should be declared and used properly in the code.
testString: assert(code.match(/receivables/g).length == 2);
- text: There should be no instances of mis-spelled variables in the code.
testString: assert(!code.match(/payable;/g));
- text: The <code>payables</code> variable should be declared and used properly in the code.
testString: assert(code.match(/payables/g).length == 2);
```
@@ -47,14 +51,16 @@ console.log(`Net working capital is: ${netWorkingCapital}`);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
let receivables = 10;
let payables = 8;
let netWorkingCapital = receivables - payables;
console.log(`Net working capital is: ${netWorkingCapital}`);
```
</section>

View File

@@ -2,25 +2,29 @@
id: 587d7b84367417b2b2512b37
title: Catch Mixed Usage of Single and Double Quotes
challengeType: 1
videoUrl: ''
forumTopicId: 301188
localeTitle: Поймать смешанное использование одиночных и двойных котировок
---
## Description
<section id="description"> JavaScript позволяет использовать одиночные («) и двойные (« ») кавычки для объявления строки. Решая, какой из них использовать, как правило, сводится к личным предпочтениям, за некоторыми исключениями. Имея два варианта, отлично, когда строка имеет сжатие или другое кусок текста, который находится в кавычках. Будьте осторожны, чтобы вы не закрывали строку слишком рано, что вызывает синтаксическую ошибку. Вот несколько примеров смешивания цитат: <blockquote> // Это правильно: <br> const grouchoContraction = «У меня был замечательный вечер, но это было не так»; <br> const quoteInString = «Граучо Маркс однажды сказал:« Мне нужно сказать, что я ошибался ». <br> // Это неверно: <br> const uhOhGroucho = &#39;У меня был замечательный вечер, но это было не так.&#39;; </blockquote> Конечно, можно использовать только один стиль цитат. Вы можете избежать кавычек внутри строки, используя символ обратного слэша (\): <blockquote> // Правильное использование одинаковых котировок: <br> const allSameQuotes = &#39;У меня был замечательный вечер, но это было не так.&#39;; </blockquote></section>
<section id='description'>
JavaScript позволяет использовать одиночные («) и двойные (« ») кавычки для объявления строки. Решая, какой из них использовать, как правило, сводится к личным предпочтениям, за некоторыми исключениями. Имея два варианта, отлично, когда строка имеет сжатие или другое кусок текста, который находится в кавычках. Будьте осторожны, чтобы вы не закрывали строку слишком рано, что вызывает синтаксическую ошибку. Вот несколько примеров смешивания цитат: <blockquote> // Это правильно: <br> const grouchoContraction = «У меня был замечательный вечер, но это было не так»; <br> const quoteInString = «Граучо Маркс однажды сказал:« Мне нужно сказать, что я ошибался ». <br> // Это неверно: <br> const uhOhGroucho = &#39;У меня был замечательный вечер, но это было не так.&#39;; </blockquote> Конечно, можно использовать только один стиль цитат. Вы можете избежать кавычек внутри строки, используя символ обратного слэша (\): <blockquote> // Правильное использование одинаковых котировок: <br> const allSameQuotes = &#39;У меня был замечательный вечер, но это было не так.&#39;; </blockquote>
</section>
## Instructions
<section id="instructions"> Исправьте строку, чтобы она использовала разные кавычки для значения <code>href</code> или избегала существующих. Сохраняйте двойные кавычки вокруг всей строки. </section>
<section id='instructions'>
Исправьте строку, чтобы она использовала разные кавычки для значения <code>href</code> или избегала существующих. Сохраняйте двойные кавычки вокруг всей строки.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Ваш код должен исправить кавычки вокруг значения <code>href</code> «#Home», либо изменив, либо ускоряя их.'
testString: 'assert(code.match(/<a href=\s*?("|\\")#Home\1\s*?>/g), "Your code should fix the quotes around the <code>href</code> value "#Home" by either changing or escaping them.");'
- text: Ваш код должен содержать двойные кавычки по всей строке.
testString: 'assert(code.match(/"<p>.*?<\/p>";/g), "Your code should keep the double quotes around the entire string.");'
- text: Your code should fix the quotes around the <code>href</code> value "#Home" by either changing or escaping them.
testString: assert(code.match(/<a href=\s*?('|\\")#Home\1\s*?>/g));
- text: Your code should keep the double quotes around the entire string.
testString: assert(code.match(/"<p>.*?<\/p>";/g));
```
@@ -39,14 +43,14 @@ console.log(innerHtml);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
let innerHtml = "<p>Click here to <a href=\"#Home\">return home</a></p>";
console.log(innerHtml);
```
</section>

View File

@@ -2,29 +2,33 @@
id: 587d7b86367417b2b2512b3b
title: Catch Off By One Errors When Using Indexing
challengeType: 1
videoUrl: ''
forumTopicId: 301189
localeTitle: Устранение ошибок при использовании индексирования
---
## Description
<section id="description"> <code>Off by one errors</code> (иногда называемой OBOE) возникает, когда вы пытаетесь настроить таргетинг на определенный индекс строки или массива (для среза или доступа к сегменту) или при циклировании по их индексам. Индексация JavaScript начинается с нуля, а не с одного, что означает, что последний индекс всегда на один меньше длины элемента. Если вы попытаетесь получить доступ к индексу, равному длине, программа может сбросить опорную ошибку индекса «вне диапазона» или напечатать <code>undefined</code> . Когда вы используете методы строк или массивов, которые принимают диапазоны индексов в качестве аргументов, это помогает прочитать документацию и понять, включены ли они (элемент в указанном индексе является частью возвращаемого) или нет. Вот несколько примеров ошибок: <blockquote> let alphabet = &quot;abcdefghijklmnopqrstuvwxyz&quot;; <br> пусть len = alphabet.length; <br> для (пусть i = 0; i &lt;= len; i ++) { <br> // петли слишком много раз в конце <br> console.log (алфавит [I]); <br> } <br> для (пусть j = 1; j &lt;len; j ++) { <br> // петли один или несколько раз и пропускает первый символ с индексом 0 <br> console.log (алфавит [J]); <br> } <br> для (пусть k = 0; k &lt;len; k ++) { <br> // Златовласки одобряет - это справедливо <br> console.log (алфавит [K]); <br> } </blockquote></section>
<section id='description'>
<code>Off by one errors</code> (иногда называемой OBOE) возникает, когда вы пытаетесь настроить таргетинг на определенный индекс строки или массива (для среза или доступа к сегменту) или при циклировании по их индексам. Индексация JavaScript начинается с нуля, а не с одного, что означает, что последний индекс всегда на один меньше длины элемента. Если вы попытаетесь получить доступ к индексу, равному длине, программа может сбросить опорную ошибку индекса «вне диапазона» или напечатать <code>undefined</code> . Когда вы используете методы строк или массивов, которые принимают диапазоны индексов в качестве аргументов, это помогает прочитать документацию и понять, включены ли они (элемент в указанном индексе является частью возвращаемого) или нет. Вот несколько примеров ошибок: <blockquote> let alphabet = &quot;abcdefghijklmnopqrstuvwxyz&quot;; <br> пусть len = alphabet.length; <br> для (пусть i = 0; i &lt;= len; i ++) { <br> // петли слишком много раз в конце <br> console.log (алфавит [I]); <br> } <br> для (пусть j = 1; j &lt;len; j ++) { <br> // петли один или несколько раз и пропускает первый символ с индексом 0 <br> console.log (алфавит [J]); <br> } <br> для (пусть k = 0; k &lt;len; k ++) { <br> // Златовласки одобряет - это справедливо <br> console.log (алфавит [K]); <br> } </blockquote>
</section>
## Instructions
<section id="instructions"> Исправьте две ошибки индексации в следующей функции, чтобы все номера с 1 по 5 были напечатаны на консоли. </section>
<section id='instructions'>
Исправьте две ошибки индексации в следующей функции, чтобы все номера с 1 по 5 были напечатаны на консоли.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Ваш код должен установить начальное условие цикла, чтобы он начинался с первого индекса.'
testString: 'assert(code.match(/i\s*?=\s*?0\s*?;/g).length == 1, "Your code should set the initial condition of the loop so it starts at the first index.");'
- text: 'Ваш код должен исправить начальное условие цикла, чтобы индекс начинался с 0.'
testString: 'assert(!code.match(/i\s?=\s*?1\s*?;/g), "Your code should fix the initial condition of the loop so that the index starts at 0.");'
- text: 'Ваш код должен установить условие окончания цикла, чтобы он остановился на последнем индексе.'
testString: 'assert(code.match(/i\s*?<\s*?len\s*?;/g).length == 1, "Your code should set the terminal condition of the loop so it stops at the last index.");'
- text: 'Ваш код должен исправить состояние терминала в цикле, чтобы он остановился на 1 до длины.'
testString: 'assert(!code.match(/i\s*?<=\s*?len;/g), "Your code should fix the terminal condition of the loop so that it stops at 1 before the length.");'
- text: Your code should set the initial condition of the loop so it starts at the first index.
testString: assert(code.match(/i\s*?=\s*?0\s*?;/g).length == 1);
- text: Your code should fix the initial condition of the loop so that the index starts at 0.
testString: assert(!code.match(/i\s?=\s*?1\s*?;/g));
- text: Your code should set the terminal condition of the loop so it stops at the last index.
testString: assert(code.match(/i\s*?<\s*?len\s*?;/g).length == 1);
- text: Your code should fix the terminal condition of the loop so that it stops at 1 before the length.
testString: assert(!code.match(/i\s*?<=\s*?len;/g));
```
@@ -52,14 +56,23 @@ countToFive();
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function countToFive() {
let firstFive = "12345";
let len = firstFive.length;
// Fix the line below
for (let i = 0; i < len; i++) {
// Do not alter code below this line
console.log(firstFive[i]);
}
}
countToFive();
```
</section>

View File

@@ -1,26 +1,30 @@
---
id: 587d7b84367417b2b2512b36
title: 'Catch Unclosed Parentheses, Brackets, Braces and Quotes'
title: Catch Unclosed Parentheses, Brackets, Braces and Quotes
challengeType: 1
videoUrl: ''
localeTitle: 'Поймать скошенные скобки, скобки, скобки и цитаты'
forumTopicId: 301190
localeTitle: Поймать скошенные скобки, скобки, скобки и цитаты
---
## Description
<section id="description"> Другая синтаксическая ошибка, о которой нужно знать, состоит в том, что все открывающиеся круглые скобки, скобки, фигурные скобки и кавычки имеют закрывающуюся пару. Забывание части имеет тенденцию происходить, когда вы редактируете существующий код и вставляете элементы с одним из типов пар. Кроме того, будьте осторожны, когда блокировки вложенных блоков блокируются другими, например добавление функции обратного вызова в качестве аргумента в метод. Один из способов избежать этой ошибки - сразу после ввода символа открытия, немедленно включить заключительное совпадение, затем переместить курсор между ними и продолжить кодирование. К счастью, большинство современных редакторов кода генерируют вторую половину пары автоматически. </section>
<section id='description'>
Другая синтаксическая ошибка, о которой нужно знать, состоит в том, что все открывающиеся круглые скобки, скобки, фигурные скобки и кавычки имеют закрывающуюся пару. Забывание части имеет тенденцию происходить, когда вы редактируете существующий код и вставляете элементы с одним из типов пар. Кроме того, будьте осторожны, когда блокировки вложенных блоков блокируются другими, например добавление функции обратного вызова в качестве аргумента в метод. Один из способов избежать этой ошибки - сразу после ввода символа открытия, немедленно включить заключительное совпадение, затем переместить курсор между ними и продолжить кодирование. К счастью, большинство современных редакторов кода генерируют вторую половину пары автоматически.
</section>
## Instructions
<section id="instructions"> Исправьте две ошибки пары в коде. </section>
<section id='instructions'>
Исправьте две ошибки пары в коде.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Ваш код должен исправить недостающую часть массива.
testString: 'assert(code.match(/myArray\s*?=\s*?\[\s*?1\s*?,\s*?2\s*?,\s*?3\s*?\];/g), "Your code should fix the missing piece of the array.");'
- text: 'Ваш код должен исправить недостающий фрагмент метода <code>.reduce()</code> . Консольный вывод должен показать, что «Сумма значений массива: 6».'
testString: 'assert(arraySum === 6, "Your code should fix the missing piece of the <code>.reduce()</code> method. The console output should show that "Sum of array values is: 6".");'
- text: Your code should fix the missing piece of the array.
testString: assert(code.match(/myArray\s*?=\s*?\[\s*?1\s*?,\s*?2\s*?,\s*?3\s*?\];/g));
- text: 'Your code should fix the missing piece of the <code>.reduce()</code> method. The console output should show that "Sum of array values is: 6".'
testString: assert(arraySum === 6);
```
@@ -40,14 +44,15 @@ console.log(`Sum of array values is: ${arraySum}`);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
let myArray = [1, 2, 3];
let arraySum = myArray.reduce((previous, current) => previous + current);
console.log(`Sum of array values is: ${arraySum}`);
```
</section>

View File

@@ -2,25 +2,29 @@
id: 587d7b85367417b2b2512b38
title: Catch Use of Assignment Operator Instead of Equality Operator
challengeType: 1
videoUrl: ''
forumTopicId: 301191
localeTitle: Поймать использование оператора присваивания вместо оператора равенства
---
## Description
<section id="description"> Ветвящиеся программы, то есть те, которые выполняют разные вещи, если выполняются определенные условия, полагаются на <code>if</code> , <code>else if</code> и <code>else</code> в JavaScript. Условие иногда принимает форму проверки того, равен ли результат равному значению. Эта логика произносится (по крайней мере, на английском языке) как «если x равно y, тогда ...», которая может буквально перевести на код с помощью оператора <code>=</code> или присваивания. Это приводит к непредвиденному потоку управления в вашей программе. Как описано в предыдущих задачах, оператор присваивания ( <code>=</code> ) в JavaScript присваивает значение имени переменной. И операторы <code>==</code> и <code>===</code> проверяют равенство (тройные <code>===</code> тесты для строгого равенства, что означает как значение, так и тип). Приведенный ниже код присваивает <code>x</code> равному 2, который оценивается как <code>true</code> . Почти каждое значение само по себе в JavaScript оценивается как <code>true</code> , кроме тех, которые известны как «ложные» значения: <code>false</code> , <code>0</code> , <code>&quot;&quot;</code> (пустая строка), <code>NaN</code> , <code>undefined</code> и <code>null</code> . <blockquote> пусть x = 1; <br> пусть у = 2; <br> если (x = y) { <br> // этот кодовый блок будет выполняться для любого значения y (если y изначально не было установлено как ложь) <br> } else { <br> // этот блок кода - это то, что должно выполняться (но не будет) в этом примере <br> } </blockquote></section>
<section id='description'>
Ветвящиеся программы, то есть те, которые выполняют разные вещи, если выполняются определенные условия, полагаются на <code>if</code> , <code>else if</code> и <code>else</code> в JavaScript. Условие иногда принимает форму проверки того, равен ли результат равному значению. Эта логика произносится (по крайней мере, на английском языке) как «если x равно y, тогда ...», которая может буквально перевести на код с помощью оператора <code>=</code> или присваивания. Это приводит к непредвиденному потоку управления в вашей программе. Как описано в предыдущих задачах, оператор присваивания ( <code>=</code> ) в JavaScript присваивает значение имени переменной. И операторы <code>==</code> и <code>===</code> проверяют равенство (тройные <code>===</code> тесты для строгого равенства, что означает как значение, так и тип). Приведенный ниже код присваивает <code>x</code> равному 2, который оценивается как <code>true</code> . Почти каждое значение само по себе в JavaScript оценивается как <code>true</code> , кроме тех, которые известны как «ложные» значения: <code>false</code> , <code>0</code> , <code>&quot;&quot;</code> (пустая строка), <code>NaN</code> , <code>undefined</code> и <code>null</code> . <blockquote> пусть x = 1; <br> пусть у = 2; <br> если (x = y) { <br> // этот кодовый блок будет выполняться для любого значения y (если y изначально не было установлено как ложь) <br> } else { <br> // этот блок кода - это то, что должно выполняться (но не будет) в этом примере <br> } </blockquote>
</section>
## Instructions
<section id="instructions"> Исправьте условие, чтобы программа выполняла правильную ветвь, и соответствующее значение присваивается <code>result</code> . </section>
<section id='instructions'>
Исправьте условие, чтобы программа выполняла правильную ветвь, и соответствующее значение присваивается <code>result</code> .
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Ваш код должен исправить условие, поэтому он проверяет равенство вместо использования назначения.'
testString: 'assert(result == "Not equal!", "Your code should fix the condition so it checks for equality, instead of using assignment.");'
- text: Условие может использовать либо <code>==</code> или <code>===</code> для проверки равенства.
testString: 'assert(code.match(/x\s*?===?\s*?y/g), "The condition can use either <code>==</code> or <code>===</code> to test for equality.");'
- text: Your code should fix the condition so it checks for equality, instead of using assignment.
testString: assert(result == "Not equal!");
- text: The condition can use either <code>==</code> or <code>===</code> to test for equality.
testString: assert(code.match(/x\s*?===?\s*?y/g));
```
@@ -48,14 +52,23 @@ console.log(result);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
let x = 7;
let y = 9;
let result = "to come";
if(x === y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);
```
</section>

View File

@@ -2,25 +2,29 @@
id: 587d7b86367417b2b2512b3d
title: Prevent Infinite Loops with a Valid Terminal Condition
challengeType: 1
videoUrl: ''
forumTopicId: 301192
localeTitle: Предотвращение бесконечных циклов с допустимым условием терминала
---
## Description
<section id="description"> Последней темой является бесконечный бесконечный цикл. Циклы - отличные инструменты, когда вам нужно, чтобы ваша программа выполняла блок кода определенное количество раз или до тех пор, пока не будет выполнено условие, но им нужно условие терминала, которое завершает цикл. Бесконечные циклы, скорее всего, замерзнут или сбой браузера, и вызовут хаос общей программы, чего никто не хочет. Был пример бесконечного цикла во введении к этому разделу - у него не было терминального условия вырваться из в <code>while</code> петлях внутри <code>loopy()</code> . Не вызывайте эту функцию! <blockquote> функция loopy () { <br> while (true) { <br> console.log («Привет, мир!»); <br> } <br> } </blockquote> Задача программиста заключается в том, чтобы в конечном итоге было достигнуто условие терминала, которое сообщает программе о выходе из кода цикла. Одна ошибка - это увеличение или уменьшение переменной счетчика в неправильном направлении от состояния терминала. Другой случайный сброс счетной или индексной переменной в коде цикла, вместо того, чтобы увеличивать или уменьшать ее. </section>
<section id='description'>
Последней темой является бесконечный бесконечный цикл. Циклы - отличные инструменты, когда вам нужно, чтобы ваша программа выполняла блок кода определенное количество раз или до тех пор, пока не будет выполнено условие, но им нужно условие терминала, которое завершает цикл. Бесконечные циклы, скорее всего, замерзнут или сбой браузера, и вызовут хаос общей программы, чего никто не хочет. Был пример бесконечного цикла во введении к этому разделу - у него не было терминального условия вырваться из в <code>while</code> петлях внутри <code>loopy()</code> . Не вызывайте эту функцию! <blockquote> функция loopy () { <br> while (true) { <br> console.log («Привет, мир!»); <br> } <br> } </blockquote> Задача программиста заключается в том, чтобы в конечном итоге было достигнуто условие терминала, которое сообщает программе о выходе из кода цикла. Одна ошибка - это увеличение или уменьшение переменной счетчика в неправильном направлении от состояния терминала. Другой случайный сброс счетной или индексной переменной в коде цикла, вместо того, чтобы увеличивать или уменьшать ее.
</section>
## Instructions
<section id="instructions"> Функция <code>myFunc()</code> содержит бесконечный цикл, потому что условие терминала <code>i != 4</code> никогда не будет оценивать значение <code>false</code> (и прерывать цикл). <code>i</code> будет увеличиваться на 2 каждый проход и прыгать прямо над 4, так как <code>i</code> нечетно для запуска. Исправьте оператор сравнения в терминальном условии, чтобы цикл выполнялся только для <code>i</code> меньшего или равного 4. </section>
<section id='instructions'>
Функция <code>myFunc()</code> содержит бесконечный цикл, потому что условие терминала <code>i != 4</code> никогда не будет оценивать значение <code>false</code> (и прерывать цикл). <code>i</code> будет увеличиваться на 2 каждый проход и прыгать прямо над 4, так как <code>i</code> нечетно для запуска. Исправьте оператор сравнения в терминальном условии, чтобы цикл выполнялся только для <code>i</code> меньшего или равного 4.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Ваш код должен изменить оператор сравнения в терминальном состоянии (средняя часть) цикла <code>for</code> .
testString: 'assert(code.match(/i\s*?<=\s*?4;/g).length == 1, "Your code should change the comparison operator in the terminal condition (the middle part) of the <code>for</code> loop.");'
- text: Ваш код должен исправить оператор сравнения в терминальном состоянии цикла.
testString: 'assert(!code.match(/i\s*?!=\s*?4;/g), "Your code should fix the comparison operator in the terminal condition of the loop.");'
- text: Your code should change the comparison operator in the terminal condition (the middle part) of the <code>for</code> loop.
testString: assert(code.match(/i\s*?<=\s*?4;/g).length == 1);
- text: Your code should fix the comparison operator in the terminal condition of the loop.
testString: assert(!code.match(/i\s*?!=\s*?4;/g));
```
@@ -42,14 +46,17 @@ function myFunc() {
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function myFunc() {
for (let i = 1; i <= 4; i += 2) {
console.log("Still going!");
}
}
```
</section>

View File

@@ -2,27 +2,31 @@
id: 587d7b83367417b2b2512b37
title: Understanding the Differences between the freeCodeCamp and Browser Console
challengeType: 1
videoUrl: ''
forumTopicId: 301193
localeTitle: Понимание различий между FreeCodeCamp и браузером
---
## Description
<section id="description"> Возможно, вы заметили, что некоторые проблемы с JavaScript для FreeCodeCamp включают в себя собственную консоль. Эта консоль ведет себя несколько иначе, чем консоль браузера, которую вы использовали в последнем вызове. Следующая задача состоит в том, чтобы выделить некоторые различия между консолью freeCodeCamp и консолью браузера. Во-первых, консоль браузера. Когда вы загружаете и запускаете обычный файл JavaScript в своем браузере, операторы <code>console.log()</code> будут печатать именно то, что вы им сообщаете, чтобы печатать на консоль браузера точное количество запрошенных вами запросов. В текстовом редакторе в браузере этот процесс немного отличается и может сбивать с толку вначале. Значения, переданные в <code>console.log()</code> в блоке текстового редактора, запускают каждый набор тестов, а также еще одно время для любых вызовов функций, которые у вас есть в коде. Это поддается некоторому интересному поведению и может начать вас в начале, потому что зарегистрированное значение, которое вы ожидаете увидеть только один раз, может распечатывать еще много раз в зависимости от количества тестов и значений, передаваемых этим тестам. Если вы хотите увидеть только свой единственный вывод и не беспокоиться о прохождении циклов тестирования, вы можете использовать <code>console.clear()</code> . </section>
<section id='description'>
Возможно, вы заметили, что некоторые проблемы с JavaScript для FreeCodeCamp включают в себя собственную консоль. Эта консоль ведет себя несколько иначе, чем консоль браузера, которую вы использовали в последнем вызове. Следующая задача состоит в том, чтобы выделить некоторые различия между консолью freeCodeCamp и консолью браузера. Во-первых, консоль браузера. Когда вы загружаете и запускаете обычный файл JavaScript в своем браузере, операторы <code>console.log()</code> будут печатать именно то, что вы им сообщаете, чтобы печатать на консоль браузера точное количество запрошенных вами запросов. В текстовом редакторе в браузере этот процесс немного отличается и может сбивать с толку вначале. Значения, переданные в <code>console.log()</code> в блоке текстового редактора, запускают каждый набор тестов, а также еще одно время для любых вызовов функций, которые у вас есть в коде. Это поддается некоторому интересному поведению и может начать вас в начале, потому что зарегистрированное значение, которое вы ожидаете увидеть только один раз, может распечатывать еще много раз в зависимости от количества тестов и значений, передаваемых этим тестам. Если вы хотите увидеть только свой единственный вывод и не беспокоиться о прохождении циклов тестирования, вы можете использовать <code>console.clear()</code> .
</section>
## Instructions
<section id="instructions"> Используйте <code>console.log()</code> для печати переменных в указанном коде. </section>
<section id='instructions'>
Используйте <code>console.log()</code> для печати переменных в указанном коде.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Используйте <code>console.log()</code> для печати переменной <code>outputTwo</code> . В вашей браузерной консоли это должно печатать значение переменной два раза.
testString: 'assert(code.match(/console\.log\(outputTwo\)/g), "Use <code>console.log()</code> to print the <code>outputTwo</code> variable. In your Browser Console this should print out the value of the variable two times.");'
- text: Используйте <code>console.log()</code> для печати переменной <code>outputOne</code> .
testString: 'assert(code.match(/console\.log\(outputOne\)/g), "Use <code>console.log()</code> to print the <code>outputOne</code> variable.");'
- text: 'Используйте <code>console.clear()</code> чтобы изменить свой вывод, чтобы переменная <code>outputOne</code> только один раз.'
testString: 'assert(code.match(/^(\s*console.clear\(\);?\s*)$/gm), "Use <code>console.clear()</code> to modify your output so that <code>outputOne</code> variable only outputs once.");'
- text: Use <code>console.log()</code> to print the <code>outputTwo</code> variable. In your Browser Console this should print out the value of the variable two times.
testString: assert(code.match(/console\.log\(outputTwo\)/g));
- text: Use <code>console.log()</code> to print the <code>outputOne</code> variable.
testString: assert(code.match(/console\.log\(outputOne\)/g));
- text: Use <code>console.clear()</code> to modify your output so that <code>outputOne</code> variable only outputs once.
testString: assert(code.match(/^(\s*console.clear\(\);?\s*)$/gm));
```
@@ -49,14 +53,15 @@ let outputOne = "Try to get this to log only once to the browser console";
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
let outputTwo = "This will print to the browser console 2 times"; console.log(outputTwo); let outputOne = "Try to get this to log only once to the browser console";
console.clear();
console.log(outputOne);
```
</section>

View File

@@ -2,27 +2,31 @@
id: 587d7b86367417b2b2512b3c
title: Use Caution When Reinitializing Variables Inside a Loop
challengeType: 1
videoUrl: ''
forumTopicId: 301194
localeTitle: Предупреждение при переинициализации переменных внутри контура
---
## Description
<section id="description"> Иногда в цикле необходимо сохранять информацию, увеличивать счетчики или переставлять переменные. Потенциальная проблема заключается в том, что переменные либо должны быть повторно инициализированы, либо нет, или наоборот. Это особенно опасно, если вы случайно сбросили переменную, используемую для состояния терминала, вызывая бесконечный цикл. Печать значений переменных с каждым циклом цикла с помощью <code>console.log()</code> может выявить ошибочное поведение, связанное с сбросом, или сбой при сбросе переменной. </section>
<section id='description'>
Иногда в цикле необходимо сохранять информацию, увеличивать счетчики или переставлять переменные. Потенциальная проблема заключается в том, что переменные либо должны быть повторно инициализированы, либо нет, или наоборот. Это особенно опасно, если вы случайно сбросили переменную, используемую для состояния терминала, вызывая бесконечный цикл. Печать значений переменных с каждым циклом цикла с помощью <code>console.log()</code> может выявить ошибочное поведение, связанное с сбросом, или сбой при сбросе переменной.
</section>
## Instructions
<section id="instructions"> Предполагается, что следующая функция создаст двумерный массив с <code>m</code> строками и <code>n</code> столбцами нулей. К сожалению, это не приводит к ожидаемому результату, потому что переменная <code>row</code> не повторно инициализируется (возвращается обратно в пустой массив) во внешнем цикле. Исправьте код, чтобы он вернул правильный массив нулей размером 3x2, который выглядит как <code>[[0, 0], [0, 0], [0, 0]]</code> . </section>
<section id='instructions'>
Предполагается, что следующая функция создаст двумерный массив с <code>m</code> строками и <code>n</code> столбцами нулей. К сожалению, это не приводит к ожидаемому результату, потому что переменная <code>row</code> не повторно инициализируется (возвращается обратно в пустой массив) во внешнем цикле. Исправьте код, чтобы он вернул правильный массив нулей размером 3x2, который выглядит как <code>[[0, 0], [0, 0], [0, 0]]</code> .
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Ваш код должен установить <code>matrix</code> переменную в массив, содержащий 3 строки по 2 столбца нулей каждый.'
testString: 'assert(JSON.stringify(matrix) == "[[0,0],[0,0],[0,0]]", "Your code should set the <code>matrix</code> variable to an array holding 3 rows of 2 columns of zeroes each.");'
- text: <code>matrix</code> переменная должна иметь 3 строки.
testString: 'assert(matrix.length == 3, "The <code>matrix</code> variable should have 3 rows.");'
- text: <code>matrix</code> переменная должна содержать по 2 столбца в каждой строке.
testString: 'assert(matrix[0].length == 2 && matrix[1].length === 2 && matrix[2].length === 2, "The <code>matrix</code> variable should have 2 columns in each row.");'
- text: Your code should set the <code>matrix</code> variable to an array holding 3 rows of 2 columns of zeroes each.
testString: assert(JSON.stringify(matrix) == "[[0,0],[0,0],[0,0]]");
- text: The <code>matrix</code> variable should have 3 rows.
testString: assert(matrix.length == 3);
- text: The <code>matrix</code> variable should have 2 columns in each row.
testString: assert(matrix[0].length == 2 && matrix[1].length === 2 && matrix[2].length === 2);
```
@@ -58,14 +62,31 @@ console.log(matrix);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function zeroArray(m, n) {
// Creates a 2-D array with m rows and n columns of zeroes
let newArray = [];
for (let i = 0; i < m; i++) {
let row = [];
// Adds the m-th row into newArray
for (let j = 0; j < n; j++) {
// Pushes n zeroes into the current row to create the columns
row.push(0);
}
// Pushes the current row, which now has n zeroes in it, to the array
newArray.push(row);
}
return newArray;
}
let matrix = zeroArray(3, 2);
console.log(matrix);
```
</section>

View File

@@ -2,23 +2,27 @@
id: 587d7b83367417b2b2512b33
title: Use the JavaScript Console to Check the Value of a Variable
challengeType: 1
videoUrl: ''
forumTopicId: 18372
localeTitle: Используйте консоль JavaScript для проверки значения переменной
---
## Description
<section id="description"> У Chrome и Firefox есть отличные консоли JavaScript, также известные как DevTools, для отладки вашего JavaScript. Инструменты разработчика можно найти в меню Chrome или в веб-консоли в меню FireFox. Если вы используете другой браузер или мобильный телефон, настоятельно рекомендуем перейти на настольный Firefox или Chrome. Метод <code>console.log()</code> , который «печатает» вывод того, что находится в его круглых скобках на консоли, скорее всего, станет наиболее полезным инструментом отладки. Размещение его в стратегических точках вашего кода может показывать промежуточные значения переменных. Хорошая практика - иметь представление о том, что должен делать вывод, прежде чем смотреть на то, что это такое. Наличие контрольных точек для просмотра состояния ваших вычислений в вашем коде поможет сузить проблему. Вот пример печати «Hello world!». на консоль: <code>console.log(&#39;Hello world!&#39;);</code> </section>
<section id='description'>
У Chrome и Firefox есть отличные консоли JavaScript, также известные как DevTools, для отладки вашего JavaScript. Инструменты разработчика можно найти в меню Chrome или в веб-консоли в меню FireFox. Если вы используете другой браузер или мобильный телефон, настоятельно рекомендуем перейти на настольный Firefox или Chrome. Метод <code>console.log()</code> , который «печатает» вывод того, что находится в его круглых скобках на консоли, скорее всего, станет наиболее полезным инструментом отладки. Размещение его в стратегических точках вашего кода может показывать промежуточные значения переменных. Хорошая практика - иметь представление о том, что должен делать вывод, прежде чем смотреть на то, что это такое. Наличие контрольных точек для просмотра состояния ваших вычислений в вашем коде поможет сузить проблему. Вот пример печати «Hello world!». на консоль: <code>console.log(&#39;Hello world!&#39;);</code>
</section>
## Instructions
undefined
<section id='instructions'>
Use the <code>console.log()</code> method to print the value of the variable <code>a</code> where noted in the code.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Ваш код должен использовать <code>console.log()</code> чтобы проверить значение переменной <code>a</code> .
testString: 'assert(code.match(/console\.log\(a\)/g), "Your code should use <code>console.log()</code> to check the value of the variable <code>a</code>.");'
- text: Your code should use <code>console.log()</code> to check the value of the variable <code>a</code>.
testString: assert(code.match(/console\.log\(a\)/g));
```
@@ -43,14 +47,13 @@ console.log(sumAB);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
var a = 5; console.log(a);
```
</section>

View File

@@ -2,27 +2,31 @@
id: 587d7b84367417b2b2512b34
title: Use typeof to Check the Type of a Variable
challengeType: 1
videoUrl: ''
forumTopicId: 18374
localeTitle: Используйте типof для проверки типа переменной
---
## Description
<section id="description"> Вы можете использовать <code>typeof</code> для проверки структуры данных или типа переменной. Это полезно при отладке при работе с несколькими типами данных. Если вы считаете, что добавляете два числа, но на самом деле это строка, результаты могут быть неожиданными. Ошибки типа могут скрываться при вычислениях или вызовах функций. Будьте особенно внимательны, когда вы обращаетесь к внешним данным и работаете с ними в виде объекта JavaScript Object Notation (JSON). Вот несколько примеров с использованием <code>typeof</code> : <blockquote> console.log (typeof &quot;&quot;); // выводит &quot;string&quot; <br> console.log (typeof 0); // выводит «число» <br> console.log (typeof []); // выводит &quot;объект&quot; <br> console.log (typeof {}); // выводит &quot;объект&quot; </blockquote> JavaScript распознает шесть примитивных (неизменных) типов данных: <code>Boolean</code> , <code>Null</code> , <code>Undefined</code> , <code>Number</code> , <code>String</code> и <code>Symbol</code> (новый с ES6) и один тип для изменяемых элементов: <code>Object</code> . Обратите внимание, что в JavaScript массивы являются технически типом объекта. </section>
<section id='description'>
Вы можете использовать <code>typeof</code> для проверки структуры данных или типа переменной. Это полезно при отладке при работе с несколькими типами данных. Если вы считаете, что добавляете два числа, но на самом деле это строка, результаты могут быть неожиданными. Ошибки типа могут скрываться при вычислениях или вызовах функций. Будьте особенно внимательны, когда вы обращаетесь к внешним данным и работаете с ними в виде объекта JavaScript Object Notation (JSON). Вот несколько примеров с использованием <code>typeof</code> : <blockquote> console.log (typeof &quot;&quot;); // выводит &quot;string&quot; <br> console.log (typeof 0); // выводит «число» <br> console.log (typeof []); // выводит &quot;объект&quot; <br> console.log (typeof {}); // выводит &quot;объект&quot; </blockquote> JavaScript распознает шесть примитивных (неизменных) типов данных: <code>Boolean</code> , <code>Null</code> , <code>Undefined</code> , <code>Number</code> , <code>String</code> и <code>Symbol</code> (новый с ES6) и один тип для изменяемых элементов: <code>Object</code> . Обратите внимание, что в JavaScript массивы являются технически типом объекта.
</section>
## Instructions
<section id="instructions"> Добавьте два оператора <code>console.log()</code> чтобы проверить <code>typeof</code> каждой из двух переменных <code>seven</code> и <code>three</code> в коде. </section>
<section id='instructions'>
Добавьте два оператора <code>console.log()</code> чтобы проверить <code>typeof</code> каждой из двух переменных <code>seven</code> и <code>three</code> в коде.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: Ваш код должен использовать <code>typeof</code> в двух оператора <code>console.log()</code> для проверки типа переменных.
testString: 'assert(code.match(/console\.log\(typeof[\( ].*\)?\)/g).length == 2, "Your code should use <code>typeof</code> in two <code>console.log()</code> statements to check the type of the variables.");'
- text: Ваш код должен использовать <code>typeof</code> для проверки типа переменной <code>seven</code> .
testString: 'assert(code.match(/typeof[\( ]seven\)?/g), "Your code should use <code>typeof</code> to check the type of the variable <code>seven</code>.");'
- text: Ваш код должен использовать <code>typeof</code> для проверки типа переменной <code>three</code> .
testString: 'assert(code.match(/typeof[\( ]three\)?/g), "Your code should use <code>typeof</code> to check the type of the variable <code>three</code>.");'
- text: Your code should use <code>typeof</code> in two <code>console.log()</code> statements to check the type of the variables.
testString: assert(code.match(/console\.log\(typeof[\( ].*\)?\)/g).length == 2);
- text: Your code should use <code>typeof</code> to check the type of the variable <code>seven</code>.
testString: assert(code.match(/typeof[\( ]seven\)?/g));
- text: Your code should use <code>typeof</code> to check the type of the variable <code>three</code>.
testString: assert(code.match(/typeof[\( ]three\)?/g));
```
@@ -43,14 +47,14 @@ console.log(seven + three);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
let seven = 7;let three = "3";console.log(typeof seven);
console.log(typeof three);
```
</section>