Add languages Russian, Arabic, Chinese, Portuguese (#18305)

This commit is contained in:
Beau Carnes
2018-10-10 18:03:03 -04:00
committed by mrugesh mohapatra
parent 09d3eca712
commit 2ca3a2093f
5517 changed files with 371466 additions and 5 deletions

View File

@ -0,0 +1,58 @@
---
id: 587d7b85367417b2b2512b3a
title: Catch Arguments Passed in the Wrong Order When Calling a Function
challengeType: 1
videoUrl: ''
localeTitle: 'Аргументы улова, пропущенные в неправильном порядке при вызове функции'
---
## Description
<section id="description"> Продолжая обсуждение функций вызова, следующая ошибка, на которую следует обратить внимание, - это когда аргументы функции поставляются в неправильном порядке. Если аргументы представляют собой разные типы, такие как функция, ожидающая массив и целое число, это скорее всего вызовет ошибку времени выполнения. Если аргументы одного типа (все целые числа, например), то логика кода не имеет смысла. Обязательно укажите все необходимые аргументы в правильном порядке, чтобы избежать этих проблем. </section>
## Instructions
<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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function raiseToPower(b, e) {
return Math.pow(b, e);
}
let base = 2;
let exp = 3;
let power = raiseToPower(exp, base);
console.log(power);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,58 @@
---
id: 587d7b85367417b2b2512b39
title: Catch Missing Open and Closing Parenthesis After a Function Call
challengeType: 1
videoUrl: ''
localeTitle: Поймать не открывать и закрывать скобки после вызова функции
---
## Description
<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>
## 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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function getNine() {
let x = 6;
let y = 3;
return x + y;
}
let result = getNine;
console.log(result);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,60 @@
---
id: 587d7b84367417b2b2512b35
title: Catch Misspelled Variable and Function Names
challengeType: 1
videoUrl: ''
localeTitle: Поймать имена с ошибкой и имена функций
---
## Description
<section id="description"> Методы <code>console.log()</code> и <code>typeof</code> являются двумя основными способами проверки промежуточных значений и типов вывода программы. Теперь пришло время войти в общие формы, которые берут ошибки. Одна проблема на синтаксическом уровне, с которой быстрые моделисты могут сочувствовать, - это скромная орфографическая ошибка. Транспонированные, отсутствует или неправильно заглавной буквы, символы в имени переменной или функции будут иметь браузер ищет объект, который не существует - и жалуюсь в виде справочной ошибки. Имена переменных и функций JavaScript чувствительны к регистру. </section>
## Instructions
<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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let receivables = 10;
let payables = 8;
let netWorkingCapital = recievables - payable;
console.log(`Net working capital is: ${netWorkingCapital}`);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,52 @@
---
id: 587d7b84367417b2b2512b37
title: Catch Mixed Usage of Single and Double Quotes
challengeType: 1
videoUrl: ''
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>
## Instructions
<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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let innerHtml = "<p>Click here to <a href="#Home">return home</a></p>";
console.log(innerHtml);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,65 @@
---
id: 587d7b86367417b2b2512b3b
title: Catch Off By One Errors When Using Indexing
challengeType: 1
videoUrl: ''
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>
## Instructions
<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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function countToFive() {
let firstFive = "12345";
let len = firstFive.length;
// Fix the line below
for (let i = 1; i <= len; i++) {
// Do not alter code below this line
console.log(firstFive[i]);
}
}
countToFive();
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,53 @@
---
id: 587d7b84367417b2b2512b36
title: 'Catch Unclosed Parentheses, Brackets, Braces and Quotes'
challengeType: 1
videoUrl: ''
localeTitle: 'Поймать скошенные скобки, скобки, скобки и цитаты'
---
## Description
<section id="description"> Другая синтаксическая ошибка, о которой нужно знать, состоит в том, что все открывающиеся круглые скобки, скобки, фигурные скобки и кавычки имеют закрывающуюся пару. Забывание части имеет тенденцию происходить, когда вы редактируете существующий код и вставляете элементы с одним из типов пар. Кроме того, будьте осторожны, когда блокировки вложенных блоков блокируются другими, например добавление функции обратного вызова в качестве аргумента в метод. Один из способов избежать этой ошибки - сразу после ввода символа открытия, немедленно включить заключительное совпадение, затем переместить курсор между ними и продолжить кодирование. К счастью, большинство современных редакторов кода генерируют вторую половину пары автоматически. </section>
## Instructions
<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".");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let myArray = [1, 2, 3;
let arraySum = myArray.reduce((previous, current => previous + current);
console.log(`Sum of array values is: ${arraySum}`);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,61 @@
---
id: 587d7b85367417b2b2512b38
title: Catch Use of Assignment Operator Instead of Equality Operator
challengeType: 1
videoUrl: ''
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>
## Instructions
<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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let x = 7;
let y = 9;
let result = "to come";
if(x = y) {
result = "Equal!";
} else {
result = "Not equal!";
}
console.log(result);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,55 @@
---
id: 587d7b86367417b2b2512b3d
title: Prevent Infinite Loops with a Valid Terminal Condition
challengeType: 1
videoUrl: ''
localeTitle: Предотвращение бесконечных циклов с допустимым условием терминала
---
## Description
<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>
## 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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function myFunc() {
for (let i = 1; i != 4; i += 2) {
console.log("Still going!");
}
}
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,62 @@
---
id: 587d7b83367417b2b2512b37
title: Understanding the Differences between the freeCodeCamp and Browser Console
challengeType: 1
videoUrl: ''
localeTitle: Понимание различий между FreeCodeCamp и браузером
---
## Description
<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>
## 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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Open your browser console
let outputTwo = "This will print to the browser console 2 times";
// Use console.log() to print the outputTwo variable
let outputOne = "Try to get this to log only once to the browser console";
// Use console.clear() in the next line to print the outputOne only once
// Use console.log() to print the outputOne variable
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,71 @@
---
id: 587d7b86367417b2b2512b3c
title: Use Caution When Reinitializing Variables Inside a Loop
challengeType: 1
videoUrl: ''
localeTitle: Предупреждение при переинициализации переменных внутри контура
---
## Description
<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>
## 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.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function zeroArray(m, n) {
// Creates a 2-D array with m rows and n columns of zeroes
let newArray = [];
let row = [];
for (let i = 0; i < m; i++) {
// 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);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,56 @@
---
id: 587d7b83367417b2b2512b33
title: Use the JavaScript Console to Check the Value of a Variable
challengeType: 1
videoUrl: ''
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>
## Instructions
undefined
## 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>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let a = 5;
let b = 1;
a++;
// Add your code below this line
let sumAB = a + b;
console.log(sumAB);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,56 @@
---
id: 587d7b84367417b2b2512b34
title: Use typeof to Check the Type of a Variable
challengeType: 1
videoUrl: ''
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>
## Instructions
<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>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
let seven = 7;
let three = "3";
console.log(seven + three);
// Add your code below this line
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>