diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index d6ee8a88b..6cb286bf2 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -24,7 +24,11 @@ let message; let message; *!* +<<<<<<< HEAD message = 'Привіт'; // збереження рядка 'Привіт' у змінній `message` +======= +message = 'Hello'; // store the string 'Hello' in the variable named message +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 */!* ``` diff --git a/1-js/02-first-steps/13-while-for/article.md b/1-js/02-first-steps/13-while-for/article.md index cd710cb7f..1bdb52937 100644 --- a/1-js/02-first-steps/13-while-for/article.md +++ b/1-js/02-first-steps/13-while-for/article.md @@ -106,10 +106,17 @@ for (let i = 0; i < 3; i++) { // показується 0, далі 1, поті | Назва частини | | | |-------|----------|----------------------------------------------------------------------------| +<<<<<<< HEAD | початок | `let i = 0` | Виконується один раз, при вході в цикл. | | умова | `i < 3`| Перевіряється перед кожною ітерацією циклу. Якщо умова невірна, цикл зупиняєтья. | | тіло | `alert(i)`| Виконується знову і знову, поки умова є правдивою (`true`). | | крок| `i++` | Виконується після тіла на кожній ітерації, але перед перевіркою умови. | +======= +| begin | `let i = 0` | Executes once upon entering the loop. | +| condition | `i < 3`| Checked before every loop iteration. If false, the loop stops. | +| body | `alert(i)`| Runs again and again while the condition is truthy. | +| step| `i++` | Executes after the body on each iteration. | +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Загальний алгоритм циклу працює так: @@ -377,7 +384,11 @@ label: { } ``` +<<<<<<< HEAD ...Однак, 99.9% часу `break` використовується всередині циклів, як ми бачили в прикладах вище. +======= +...Although, 99.9% of the time `break` is used inside loops, as we've seen in the examples above. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Виклик `continue` можливий лише всередині циклу. ```` diff --git a/1-js/02-first-steps/15-function-basics/article.md b/1-js/02-first-steps/15-function-basics/article.md index eb2badf74..c5be00eb0 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -181,7 +181,11 @@ alert( from ); // Анна Ми оголошуємо функції, вказуючи їхні параметри, потім викликаємо їх, передаючи аргументи. +<<<<<<< HEAD Дехто може сказати, що в прикладі вище "функцію `showMessage` оголошено з двома параметрами, потім викликано з двома аргументами: `from` і `"Привіт"`". +======= +In the example above, one might say: "the function `showMessage` is declared with two parameters, then called with two arguments: `from` and `"Hello"`". +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ## Типові значення @@ -247,7 +251,11 @@ function showMessage(text) { showMessage(); // порожнє повідомлення ``` +<<<<<<< HEAD ...Або ми можемо використати оператор `||`: +======= +...Or we could use the `||` operator: +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ```js function showMessage(text) { diff --git a/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md b/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md index c1575b6eb..8b6d1d38a 100644 --- a/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md +++ b/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md @@ -4,7 +4,11 @@ importance: 2 # Дві функції - один об’єкт +<<<<<<< HEAD Чи можливо створити функції `A` та `B`, щоб `new A() == new B()`? +======= +Is it possible to create functions `A` and `B` so that `new A() == new B()`? +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ```js no-beautify function A() { ... } diff --git a/1-js/04-object-basics/09-object-toprimitive/article.md b/1-js/04-object-basics/09-object-toprimitive/article.md index a59604c7d..741a288f6 100644 --- a/1-js/04-object-basics/09-object-toprimitive/article.md +++ b/1-js/04-object-basics/09-object-toprimitive/article.md @@ -9,7 +9,11 @@ JavaScript не дозволяє налаштувати, як працюють Це важливе обмеження, оскільки результат `obj1 + obj2` не може бути іншим об’єктом! +<<<<<<< HEAD Наприклад, ми не можемо зробити об’єкти, що представляють вектори або матриці (або досягнення або що завгодно) та додати їх і очікувати, що "підсумковий" результат буде об’єктом. Автоматично такі архітектурні особливості недоступні. +======= +E.g. we can't make objects representing vectors or matrices (or achievements or whatever), add them and expect a "summed" object as the result. Such architectural feats are automatically "off the board". +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Отже, оскільки ми не можемо автоматично за допомогою мови програмування виконувати подібні операції над об’єктами, то в реальних проєктах немає "математики з об’єктами". Коли стаються подібні операції (наприклад, `obj1 + obj2`), причиною цьому зазвичай є помилка програмування. @@ -133,8 +137,13 @@ alert(user + 500); // hint: default -> 1500 Якщо немає `Symbol.toPrimitive` тоді JavaScript намагається знайти методи `toString` і `valueOf`: +<<<<<<< HEAD - Для "string" підказки: `toString`, і якщо цей метод не існує, то `valueOf` (таким чином `toString` має пріоритет при перетворенні в рядок). - Для інших підказок: `valueOf`, і якщо це не існує, то `toString` (таким чином `valueOf` має пріоритет для математики). +======= +- For the "string" hint: `toString`, and if it doesn't exist, then `valueOf` (so `toString` has the priority for string conversions). +- For other hints: `valueOf`, and if it doesn't exist, then `toString` (so `valueOf` has the priority for maths). +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Методи `toString` і `valueOf` походять з давніх часів. Вони не є символами (багато часу назад символи не існували), а скоріше є "звичними" методами, що названі за допомогою рядків. Вони забезпечують альтернативний шлях "старого стилю" для реалізації перетворення. @@ -274,4 +283,8 @@ alert(obj + 2); // 22 ("2" + 2), перетворення до примітив На практиці досить часто для реалізації достатньо лише `obj.toString()` як методу для перетворення рядків, який повинен повернути "читабельне для людини" представлення об’єкта, для цілей логування або пошуку помилок. +<<<<<<< HEAD Що стосується математичних операцій, JavaScript не надає способу "перевизначити" їх через методи, тому реальні проєкти рідко використовують математичні операції на об’єктах. +======= +As for math operations, JavaScript doesn't provide a way to "override" them using methods, so real life projects rarely use them on objects. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 diff --git a/1-js/05-data-types/02-number/article.md b/1-js/05-data-types/02-number/article.md index a868d6f8d..aea299cc5 100644 --- a/1-js/05-data-types/02-number/article.md +++ b/1-js/05-data-types/02-number/article.md @@ -4,7 +4,11 @@ 1. Звичайні числа в JavaScript, що зберігаються у 64-бітному форматі [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision), також відомі як "подвійні точні числа з плаваючою комою". Це числа, які ми використовуємо більшість часу, і про них ми поговоримо в цьому розділі. +<<<<<<< HEAD 2. Числа BigInt, для відображення цілих чисел довільної довжини. Іноді вони потрібні, оскільки звичайне число не може безпечно перевищувати 253 або бути менше -253. Оскільки числа BigInt використовуються в декількох спеціальних областях, їм присвячено окремий розділ . +======= +2. BigInt numbers, to represent integers of arbitrary length. They are sometimes needed, because a regular number can't safely exceed 253 or be less than -253. As bigints are used in few special areas, we devote them a special chapter . +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Тож тут ми поговоримо про звичайні числа. Поглибимо наші знання про них. @@ -37,8 +41,13 @@ alert( 7.3e9 ); // 7.3 мільярдів (таке ж саме що 7300000000 Іншими словами, `"e"` помножує число на `1` із заданим числом нулів. ```js +<<<<<<< HEAD 1e3 === 1 * 1000; // e3 означає *1000 1.23e6 === 1.23 * 1000000; // e6 означає *1000000 +======= +1e3 === 1 * 1000; // e3 means *1000 +1.23e6 === 1.23 * 1000000; // e6 means *1000000 +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ``` Тепер напишемо щось дуже маленьке. Наприклад, 1 мікросекунда (одна мільйонна частина секунди): @@ -53,15 +62,26 @@ let ms = 0.000001; let ms = 1e-6; // шість нулів зліва від 1 ``` +<<<<<<< HEAD Якщо порахувати нулі в `0.000001`, їх буде 6. Так що, цілком очікувано, що це `1e-6`. +======= +If we count the zeroes in `0.000001`, there are 6 of them. So naturally it's `1e-6`. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Іншими словами, від’ємне число після `"е"` означає ділення на 1 з заданою кількістю нулів: ```js +<<<<<<< HEAD // -3 ділиться на 1 з 3 нулями 1e-3 === 1 / 1000; // 0.001 // -6 ділиться на 1 з 6 нулями +======= +// -3 divides by 1 with 3 zeroes +1e-3 === 1 / 1000; // 0.001 + +// -6 divides by 1 with 6 zeroes +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 1.23e-6 === 1.23 / 1000000; // 0.00000123 ``` @@ -119,6 +139,11 @@ alert( num.toString(2) ); // 11111111 Також можна написати `(123456).toString(36)`. +<<<<<<< HEAD +======= +Also could write `(123456).toString(36)`. + +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ``` ## Округлення @@ -329,7 +354,11 @@ let num = +prompt("Enter a number", ''); alert( isFinite(num) ); ``` +<<<<<<< HEAD Зауважте, що порожній рядок, або рядок з пробілів трактується як `0` у всіх числових функціях, включаючи `isFinite`. +======= +Please note that an empty or a space-only string is treated as `0` in all numeric functions including `isFinite`. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ```smart header="Порівняння з `Object.is`" diff --git a/1-js/05-data-types/09-keys-values-entries/article.md b/1-js/05-data-types/09-keys-values-entries/article.md index 2e0bab1b0..9e9d148d5 100644 --- a/1-js/05-data-types/09-keys-values-entries/article.md +++ b/1-js/05-data-types/09-keys-values-entries/article.md @@ -76,9 +76,15 @@ for (let value of Object.values(user)) { Якщо б ми хотіли їх застосувати, тоді б ми використовували `Object.entries` з подальшим викликом `Object.fromEntries`: +<<<<<<< HEAD 1. Викликаємо `Object.entries(obj)`, щоб отримати масив пар ключ/значення з `obj`. 2. На ньому використовуємо методи масиву, наприклад `map`, щоб перетворити ці пари ключів/значень. 3. Використаємо `Object.fromEntries(array)` на отриманому масиві, щоб перетворити його знову на об’єкт. +======= +1. Use `Object.entries(obj)` to get an array of key/value pairs from `obj`. +2. Use array methods on that array, e.g. `map`, to transform these key/value pairs. +3. Use `Object.fromEntries(array)` on the resulting array to turn it back into an object. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Наприклад, у нас є об’єкт з цінами, і ми б хотіли їх подвоїти: @@ -91,8 +97,13 @@ let prices = { *!* let doublePrices = Object.fromEntries( +<<<<<<< HEAD // перетворити ціни на масив, потім застосувати map, щоб перетворити на пари ключ/значення // а потім fromEntries повертає об’єкт +======= + // convert prices to array, map each key/value pair into another pair + // and then fromEntries gives back the object +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 Object.entries(prices).map(entry => [entry[0], entry[1] * 2]) ); */!* @@ -100,4 +111,8 @@ let doublePrices = Object.fromEntries( alert(doublePrices.meat); // 8 ``` +<<<<<<< HEAD З першого погляду це може здатися важким, але стане зрозумілим після того, як ви використаєте це декілька разів. Таким чином ми можемо створювати потужні ланцюги перетворень. +======= +It may look difficult at first sight, but becomes easy to understand after you use it once or twice. We can make powerful chains of transforms this way. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 diff --git a/1-js/06-advanced-functions/04-var/article.md b/1-js/06-advanced-functions/04-var/article.md index a27994b87..ba7699943 100644 --- a/1-js/06-advanced-functions/04-var/article.md +++ b/1-js/06-advanced-functions/04-var/article.md @@ -4,7 +4,11 @@ ```smart header="Ця стаття призначена для розуміння старих скриптів" Інформація в цій статті корисна для розуміння старих скриптів. +<<<<<<< HEAD Зараз так код не пишуть. +======= +That's not how we write new code. +>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602 ``` У першому розділі про [змінні](info:variables), ми ознайомились з трьома способами оголошення змінних: