From bd9ef872a9a0f7e73a8c1f76be319e1e515e08c9 Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Wed, 10 Jun 2026 21:04:38 +0500 Subject: [PATCH 1/2] fix(theory): port missing examples from Python across matched lessons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Допорт потерянных при выравнивании блоков: конвенция кавычек (hello-world), \" как один символ (quotes), контр-пример со слешем (escape-characters), диаграмма цепочки преобразований (casting), randomNumber в списке примеров (call), блок про Math.min (variadic), диаграмма цепочки методов (method-chain), уточнение правил ||/&& про последний операнд (logical-expressions). Co-Authored-By: Claude Fable 5 --- modules/10-basics/10-hello-world/ru/README.md | 6 ++++++ modules/25-strings/10-quotes/ru/README.md | 2 ++ modules/25-strings/15-escape-characters/ru/README.md | 9 ++++++++- .../33-data-types/55-data-types-casting/ru/README.md | 6 ++++++ modules/35-calling-functions/100-call/ru/README.md | 3 +++ .../180-variadic-parameters/ru/README.md | 7 +++++++ modules/38-objects/500-method-chain/ru/README.md | 11 ++++++++++- modules/45-logic/70-logical-expressions/ru/README.md | 4 ++-- 8 files changed, 44 insertions(+), 4 deletions(-) diff --git a/modules/10-basics/10-hello-world/ru/README.md b/modules/10-basics/10-hello-world/ru/README.md index ac74b204..414ca83e 100644 --- a/modules/10-basics/10-hello-world/ru/README.md +++ b/modules/10-basics/10-hello-world/ru/README.md @@ -24,6 +24,12 @@ console.log('Хекслет - школа программирования'); console.log("Хекслет - школа программирования"); ``` +По принятому в JavaScript-сообществе стилю для строк рекомендуется использовать одинарные кавычки. Если внутри строки есть апостроф, одинарные кавычки сломают синтаксис, поэтому в таких случаях используют двойные. + +```javascript +console.log("it's JavaScript"); // апостроф внутри, поэтому двойные кавычки +``` + ## Значение символов Код состоит из команд, и каждая из них должна быть написана в определенной форме. Помимо букв, в коде важны кавычки `'` и `"`, скобки `()` и знаки препинания. Пропущенный или перепутанный знак приведет к тому, что программа не запустится. Попробуйте определить, какую ошибку допустили в каждой из строк? diff --git a/modules/25-strings/10-quotes/ru/README.md b/modules/25-strings/10-quotes/ru/README.md index 14631a48..8647d730 100644 --- a/modules/25-strings/10-quotes/ru/README.md +++ b/modules/25-strings/10-quotes/ru/README.md @@ -96,6 +96,8 @@ console.log("Dragon's mother said \"No\""); Здесь мы экранируем двойные кавычки внутри строки, заключённой в двойные кавычки. +Обратите внимание, JavaScript воспринимает `\"` как один символ-кавычку, а не два символа. То же самое касается `\'`, `\\`, `\n` и других управляющих последовательностей. Они выглядят как два символа в коде, но в строке считаются за один. + То же самое работает и в обратном случае. ```javascript diff --git a/modules/25-strings/15-escape-characters/ru/README.md b/modules/25-strings/15-escape-characters/ru/README.md index e858a411..5c69ffa4 100644 --- a/modules/25-strings/15-escape-characters/ru/README.md +++ b/modules/25-strings/15-escape-characters/ru/README.md @@ -91,13 +91,20 @@ Second line ## Как вывести сам символ `\n` -`\n` в JavaScript является управляющей последовательностью. Если вам нужно вывести именно символы `\` и `n`, а не перевод строки, их нужно экранировать. Для этого перед обратным слешем добавляют ещё один слеш. +`\n` в JavaScript является управляющей последовательностью. Она управляет расположением текста и не выводится на экран как обычные символы. Если вам нужно вывести именно символы `\` и `n`, а не перевод строки, их нужно экранировать. Для этого перед обратным слешем добавляют ещё один слеш. ```javascript console.log('Hello\\nWorld'); // Hello\nWorld + +// Если забыть указать второй слеш +console.log('Hello\nWorld'); +// Hello +// World ``` +В этом случае JavaScript понимает `\\` как обычный обратный слеш и показывает строку без перевода строки. + ## Другие управляющие последовательности Кроме `\n`, в JavaScript есть и другие управляющие последовательности. diff --git a/modules/33-data-types/55-data-types-casting/ru/README.md b/modules/33-data-types/55-data-types-casting/ru/README.md index e681c458..7d9290d5 100644 --- a/modules/33-data-types/55-data-types-casting/ru/README.md +++ b/modules/33-data-types/55-data-types-casting/ru/README.md @@ -45,6 +45,12 @@ console.log('Age: ' + String(age)); // => Age: 42 // Хотя здесь удобнее интерполяция: `Age: ${age}` ``` +Преобразования можно выполнять одно за другим — значение проходит цепочку превращений: + +```text +'123' ──Number()──→ 123 ──String()──→ '123' +``` + ## Преобразование в логическое значение с помощью Boolean() ```javascript diff --git a/modules/35-calling-functions/100-call/ru/README.md b/modules/35-calling-functions/100-call/ru/README.md index 5dffbfe6..1a43df37 100644 --- a/modules/35-calling-functions/100-call/ru/README.md +++ b/modules/35-calling-functions/100-call/ru/README.md @@ -27,6 +27,9 @@ calculateTax(5000, 'Florida'); // Проверка, есть ли пользователь в системе isRegistered('Alice'); +// Получение случайного числа от 1 до 10 +randomNumber(1, 10); + // Создание резервной копии базы данных backupDatabase(); ``` diff --git a/modules/35-calling-functions/180-variadic-parameters/ru/README.md b/modules/35-calling-functions/180-variadic-parameters/ru/README.md index 413afa46..879cfd99 100644 --- a/modules/35-calling-functions/180-variadic-parameters/ru/README.md +++ b/modules/35-calling-functions/180-variadic-parameters/ru/README.md @@ -24,3 +24,10 @@ Math.max(1, 10, 3); // 10 * Третьи квадратные скобки вложены во вторые и содержат `[, ...]`. Многоточие указывает на то, что параметров может быть сколько угодно. Если убрать эти скобки и их содержимое, то получится запись вида `Math.max([value1[, value2]])`. Запятая стоит внутри квадратных скобок, так как если мы не указываем параметр, то запятая не нужна. Иначе вызов с одним параметром выглядел бы так `Math.max(value1,)`. + +Аналогично работает функция `Math.min()`, только она ищет наименьшее значение: + +```javascript +Math.min(1, 10, 3); // 1 +Math.min(1, -3, 2, 3, 2); // -3 +``` diff --git a/modules/38-objects/500-method-chain/ru/README.md b/modules/38-objects/500-method-chain/ru/README.md index 0f7857c6..3fc49998 100644 --- a/modules/38-objects/500-method-chain/ru/README.md +++ b/modules/38-objects/500-method-chain/ru/README.md @@ -23,7 +23,16 @@ const len = name.length; console.log(len.toString()); ``` -Эти примеры абсолютно эквивалентны. Мы можем выполнять операции последовательно с промежуточным созданием констант, а можем строить непрерывную цепочку из свойств и методов. В цепочках вычисления всегда идут слева направо. +Эти примеры абсолютно эквивалентны. Мы можем выполнять операции последовательно с промежуточным созданием констант, а можем строить непрерывную цепочку из свойств и методов. В цепочках вычисления всегда идут слева направо. Каждый метод возвращает новое значение, и следующий метод применяется уже к нему: + +```text +' Hello, World! '.trim().toLowerCase().replace('world', 'js') + │ │ │ + ↓ ↓ ↓ + 'Hello, World!' │ │ + 'hello, world!' │ + 'hello, js!' +``` Ещё один пример для закрепления: diff --git a/modules/45-logic/70-logical-expressions/ru/README.md b/modules/45-logic/70-logical-expressions/ru/README.md index b23d9495..470894aa 100644 --- a/modules/45-logic/70-logical-expressions/ru/README.md +++ b/modules/45-logic/70-logical-expressions/ru/README.md @@ -11,7 +11,7 @@ console.log(0 || 1); 1 ``` -Оператор **ИЛИ** работает так, что его выполнение (слева направо) прерывается и возвращается результат первого аргумента, который можно преобразовать в `true`. +Оператор **ИЛИ** работает так, что его выполнение (слева направо) прерывается и возвращается результат первого аргумента, который можно преобразовать в `true`. Если такого аргумента нет, возвращается последний операнд. Ниже пример с оператором **И**: @@ -23,7 +23,7 @@ console.log(0 && 1); 0 ``` -Оператор **И** работает так, что его выполнение (слева направо) прерывается и возвращается результат первого аргумента, который можно преобразовать в `false`. +Оператор **И** работает так, что его выполнение (слева направо) прерывается и возвращается результат первого аргумента, который можно преобразовать в `false`. Если такого аргумента нет, возвращается последний операнд. В JavaScript есть два простых правила, по которым происходят преобразования: From 4d601893e5f7bf6c08c161c4deb8fe5084ce41ba Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Wed, 10 Jun 2026 21:13:57 +0500 Subject: [PATCH 2/2] fix(30-encoding): drop fromCharCode block from theory, exercise template covers it (parity with Python) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В Python теория encoding не вводит chr() — образец даёт само упражнение. JS-упражнение устроено идентично, абзац в теории избыточен. Co-Authored-By: Claude Fable 5 --- modules/25-strings/30-encoding/ru/README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/modules/25-strings/30-encoding/ru/README.md b/modules/25-strings/30-encoding/ru/README.md index 79ab5b77..9bd20289 100644 --- a/modules/25-strings/30-encoding/ru/README.md +++ b/modules/25-strings/30-encoding/ru/README.md @@ -75,9 +75,3 @@ g o o d - Вы будете работать с текстом, и ошибки кодировки по-прежнему случаются, особенно при чтении файлов, обработке данных, взаимодействии с API и базами данных. - JavaScript по умолчанию использует Unicode для строк. - Нужно уметь диагностировать проблемы. Например, если видите «кракозябры», это почти наверняка ошибка кодировки. - -В JavaScript можно получить символ по его числовому коду с помощью `String.fromCharCode()`. Это встроенная функция с длинным составным именем — используйте её по образцу из примера; подробнее о функциях и таких именах поговорим в следующих модулях. - -```javascript -console.log(String.fromCharCode(63)); // => ? -```