From 3507bde2b31ccef2ba2e77af12622dcee8b08273 Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Wed, 10 Jun 2026 17:41:25 +0500 Subject: [PATCH 1/2] fix(50-loops): use full assignment form before syntax-sugar lesson, align with Python (T04) Co-Authored-By: Claude Fable 5 --- modules/50-loops/10-while/ru/README.md | 10 +++++----- .../50-loops/15-conditions-inside-loops/ru/README.md | 6 +++--- modules/50-loops/20-aggregation-numbers/index.js | 9 +++++---- modules/50-loops/23-aggregation-strings/index.js | 5 +++-- modules/50-loops/25-iteration-over-string/index.js | 8 +++++--- modules/50-loops/28-build-strings/index.js | 3 ++- modules/50-loops/28-build-strings/ru/README.md | 4 +--- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/modules/50-loops/10-while/ru/README.md b/modules/50-loops/10-while/ru/README.md index 396cf4fd..865e3673 100644 --- a/modules/50-loops/10-while/ru/README.md +++ b/modules/50-loops/10-while/ru/README.md @@ -12,7 +12,7 @@ let counter = 0; while (counter < 5) { console.log('Hello!'); - counter += 1; + counter = counter + 1; } // => Hello! @@ -42,7 +42,7 @@ counter = 0 │ true │ │ ↓ │ console.log('Hello!') -│ counter += 1 +│ counter = counter + 1 └──────────┘ false → выход из цикла ``` @@ -55,13 +55,13 @@ counter = 0 let counter = 0; while (counter < 2) { console.log('Hello!'); - counter += 1; + counter = counter + 1; } console.log('End of loop'); ``` -Здесь `console.log('Hello!')` и `counter += 1` находятся внутри цикла, а `console.log('End of loop')` стоит за его пределами, поэтому выполнится один раз после завершения цикла. +Здесь `console.log('Hello!')` и `counter = counter + 1` находятся внутри цикла, а `console.log('End of loop')` стоит за его пределами, поэтому выполнится один раз после завершения цикла. ## Цикл внутри функции @@ -72,7 +72,7 @@ const printNumbers = (n) => { let i = 1; while (i <= n) { console.log(i); - i += 1; + i = i + 1; } console.log('Finished!'); }; diff --git a/modules/50-loops/15-conditions-inside-loops/ru/README.md b/modules/50-loops/15-conditions-inside-loops/ru/README.md index 25f41e7a..712acfce 100644 --- a/modules/50-loops/15-conditions-inside-loops/ru/README.md +++ b/modules/50-loops/15-conditions-inside-loops/ru/README.md @@ -8,7 +8,7 @@ while (number <= 10) { if (number % 2 === 0) { console.log(number); } - number += 1; + number = number + 1; } // => 2 @@ -51,10 +51,10 @@ const countChars = (str, char) => { while (i < str.length) { if (str[i] === char) { // Считаем только подходящие символы - count += 1; + count = count + 1; } // Счётчик увеличивается в любом случае - i += 1; + i = i + 1; } return count; diff --git a/modules/50-loops/20-aggregation-numbers/index.js b/modules/50-loops/20-aggregation-numbers/index.js index 582fe820..8b6a0caf 100644 --- a/modules/50-loops/20-aggregation-numbers/index.js +++ b/modules/50-loops/20-aggregation-numbers/index.js @@ -1,16 +1,17 @@ +/* eslint operator-assignment: 0 */ // BEGIN const calculateElectricityBill = (kwh) => { let total = 0; let current = 1; while (current <= kwh) { if (current <= 100) { - total += 5; + total = total + 5; } else if (current <= 200) { - total += 7; + total = total + 7; } else { - total += 10; + total = total + 10; } - current += 1; + current = current + 1; } return total; diff --git a/modules/50-loops/23-aggregation-strings/index.js b/modules/50-loops/23-aggregation-strings/index.js index e346959d..013d4050 100644 --- a/modules/50-loops/23-aggregation-strings/index.js +++ b/modules/50-loops/23-aggregation-strings/index.js @@ -1,3 +1,4 @@ +/* eslint operator-assignment: 0 */ // BEGIN const sanitizePhoneNumber = (phone) => { let result = ''; @@ -5,9 +6,9 @@ const sanitizePhoneNumber = (phone) => { while (i < phone.length) { const char = phone[i]; if (!' ()-'.includes(char)) { - result += char; + result = result + char; } - i += 1; + i = i + 1; } return result; diff --git a/modules/50-loops/25-iteration-over-string/index.js b/modules/50-loops/25-iteration-over-string/index.js index feafd6ec..d86599e4 100644 --- a/modules/50-loops/25-iteration-over-string/index.js +++ b/modules/50-loops/25-iteration-over-string/index.js @@ -1,3 +1,4 @@ +/* eslint operator-assignment: 0 */ // BEGIN const maskCardNumber = (cardNumber) => { let result = ''; @@ -5,11 +6,12 @@ const maskCardNumber = (cardNumber) => { const visiblePartStart = cardNumber.length - 4; while (i < cardNumber.length) { if (i < visiblePartStart) { - result += '*'; + // biome-ignore lint/style/useTemplate: учебный пример до урока 30-syntax-sugar + result = result + '*'; } else { - result += cardNumber[i]; + result = result + cardNumber[i]; } - i += 1; + i = i + 1; } return result; diff --git a/modules/50-loops/28-build-strings/index.js b/modules/50-loops/28-build-strings/index.js index 85273c5f..fcf3bed5 100644 --- a/modules/50-loops/28-build-strings/index.js +++ b/modules/50-loops/28-build-strings/index.js @@ -1,10 +1,11 @@ +/* eslint operator-assignment: 0 */ // BEGIN const getEvenChars = (str) => { let i = 0; let result = ''; while (i < str.length) { if (i % 2 !== 0) { - result = `${result}${str[i]}`; + result = result + str[i]; } i = i + 1; } diff --git a/modules/50-loops/28-build-strings/ru/README.md b/modules/50-loops/28-build-strings/ru/README.md index 73345537..9f57f270 100644 --- a/modules/50-loops/28-build-strings/ru/README.md +++ b/modules/50-loops/28-build-strings/ru/README.md @@ -16,9 +16,7 @@ const reverse = (str) => { let result = ''; while (i < str.length) { // Соединяем в обратном порядке - result = `${str[i]}${result}`; - // То же самое через конкатенацию - // result = str[i] + result; + result = str[i] + result; i = i + 1; } From 96098d66018a5f677a63c4da85de8dfe0a0a0e5e Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Wed, 10 Jun 2026 17:43:04 +0500 Subject: [PATCH 2/2] fix(28-build-strings): sync en/es code blocks with concatenation form Co-Authored-By: Claude Fable 5 --- modules/50-loops/28-build-strings/description.es.yml | 2 +- modules/50-loops/28-build-strings/en/README.md | 2 +- modules/50-loops/28-build-strings/es/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/50-loops/28-build-strings/description.es.yml b/modules/50-loops/28-build-strings/description.es.yml index e7d3c905..a5851377 100644 --- a/modules/50-loops/28-build-strings/description.es.yml +++ b/modules/50-loops/28-build-strings/description.es.yml @@ -20,7 +20,7 @@ theory: | let result = ''; while (i < str.length) { // Unir en orden inverso - result = `${str[i]}${result}`; + result = str[i] + result; // Lo mismo, pero con concatenación // result = str[i] + result; i = i + 1; diff --git a/modules/50-loops/28-build-strings/en/README.md b/modules/50-loops/28-build-strings/en/README.md index 4c169164..72c1f729 100644 --- a/modules/50-loops/28-build-strings/en/README.md +++ b/modules/50-loops/28-build-strings/en/README.md @@ -16,7 +16,7 @@ const reverse = (str) => { let result = ''; while (i < str.length) { // Connect it in reverse order - result = `${str[i]}${result}`; + result = str[i] + result; // Same through concatenation // result = str[i] + result; i = i + 1; diff --git a/modules/50-loops/28-build-strings/es/README.md b/modules/50-loops/28-build-strings/es/README.md index b15c96b8..afd322ad 100644 --- a/modules/50-loops/28-build-strings/es/README.md +++ b/modules/50-loops/28-build-strings/es/README.md @@ -16,7 +16,7 @@ const reverse = (str) => { let result = ''; while (i < str.length) { // Unir en orden inverso - result = `${str[i]}${result}`; + result = str[i] + result; // Lo mismo, pero con concatenación // result = str[i] + result; i = i + 1;