diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index d6ee8a88b..b163f2656 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -70,7 +70,7 @@ let user = 'Іван', message = 'Привіт'; ``` -...або навіть в стилі "кома спочатку": +...або навіть у стилі "кома спочатку": ```js no-beautify let user = 'Іван' @@ -78,10 +78,10 @@ let user = 'Іван' , message = 'Привіт'; ``` -Технічно, всі ці способи роблять одне і те ж. Тому це питання особистого смаку та естетики. +Технічно, всі ці способи роблять одне й те ж. Тому це питання особистого смаку та естетики. ````smart header="`var` замість `let`" -В старих скриптах ви можете знайти інше ключове слово: `var` замість `let`: +У старих скриптах ви можете знайти інше ключове слово: `var` замість `let`: ```js *!*var*/!* message = 'Привіт'; @@ -89,14 +89,14 @@ let user = 'Іван' Ключове слово `var` *майже* таке, як `let`. Воно теж оголошує змінну, але дещо іншим, "застарілим" способом. -Існують деякі відмінності між `let` і `var`, але вони поки що не мають для нас значення. Ми дізнаємося більше про ці відмінності в розділі . +Є деякі відмінності між `let` і `var`, але вони поки що не мають для нас значення. Ми дізнаємося більше про ці відмінності в розділі . ```` ## Аналогія з життя Ми легко зрозуміємо концепцію "змінної", якщо уявимо її у вигляді "коробки" для даних з унікальною назвою на наклейці. -Наприклад, змінну `message` можна уявити як коробку з підписом `"Повідомлення"` із значенням `"Привіт!"` всередині: +Наприклад, змінну `message` можна уявити як коробку з підписом `"Повідомлення"` зі значенням `"Привіт!"` всередині: ![](variable.svg) @@ -129,7 +129,7 @@ let message; message = hello; */!* -// тепер дві змінні мають одинакові дані +// тепер дві змінні мають однакові дані alert(hello); // Привіт світ! alert(message); // Привіт світ! ``` @@ -145,23 +145,23 @@ let message = "Це"; // повторне 'let' призведе до синтаксичної помилки let message = "Той"; // SyntaxError: 'message' has already been declared ``` -Тому ми повинні оголосити змінну лише раз, а потім просто посилатися на неї, без `let`. +Тому ми маємо оголосити змінну лише раз, а потім просто посилатися на неї, без `let`. ```` ```smart header="Функційне програмування" -Цікаво відзначити, що [функційні](https://uk.wikipedia.org/wiki/Функційне_програмування) мови програмування, такі як [Scala](http://www.scala-lang.org/) або [Erlang](http://www.erlang.org/), забороняють змінювати значення змінних. +Цікаво зазначити, що [функційні](https://uk.wikipedia.org/wiki/Функційне_програмування) мови програмування, такі як [Scala](http://www.scala-lang.org/) або [Erlang](http://www.erlang.org/), забороняють змінювати значення змінних. -В таких мовах збережені в "коробку" значення залишаються там назавжди. Якщо нам потрібно зберегти щось інше, мова змусить нас створити нову коробку (оголосити нову змінну). Ми не можемо використати стару змінну. +У таких мовах збережені в "коробку" значення залишаються там назавжди. Якщо нам потрібно зберегти щось інше, мова змусить нас створити нову коробку (оголосити нову змінну). Ми не можемо використати стару змінну. -Хоча на перший погляд це може здатися дивним, проте ці мови цілком підходять для серйозної розробки. Більше того, є такі галузі, як от паралельні обчислення, де це обмеження дає певні переваги. Вивчення такої мови (навіть якщо ви не плануєте користуватися нею найближчим часом) рекомендується для розширення кругозору. +Хоча на перший погляд це може здатися дивним, проте ці мови цілком підходять для серйозної розробки. Ба більше, є такі галузі, як от паралельні обчислення, де це обмеження дає певні переваги. Вивчення такої мови (навіть якщо ви не плануєте користуватися нею найближчим часом) рекомендується для розширення кругозору. ``` ## Іменування змінних [#variable-naming] В JavaScript є два обмеження, які стосуються імен змінних: -1. Ім'я повинне містити лише букви, цифри або символи `$` і `_`. -2. Перший символ не повинен бути числом. +1. Ім'я має містити лише букви, цифри або символи `$` і `_`. +2. Перший символ не має бути числом. Ось приклади допустимих імен: @@ -170,7 +170,7 @@ let userName; let test123; ``` -Для написання імені, яке містить декілька слів, зазвичай використовують "[верблюжий регістр](https://uk.wikipedia.org/wiki/Верблюжий_регістр)" (camelCase). Тобто слова йдуть одне за одним, і кожне слово пишуть з великої букви і без пробілів: `myVeryLongName`. Зауважте, що перше слово пишеться з маленької букви. +Для написання імені, яке містить декілька слів, зазвичай використовують "[верблюжий регістр](https://uk.wikipedia.org/wiki/Верблюжий_регістр)" (camelCase). Тобто слова йдуть одне за одним, і кожне слово пишуть із великої букви й без пробілів: `myVeryLongName`. Зауважте, що перше слово пишеться з маленької букви. Що цікаво -- знак долара `'$'` і знак підкреслення `'_'` також можна використовувати в іменах. Це звичайні символи, такі ж, як і букви, без будь-якого особливого значення. @@ -203,11 +203,11 @@ let назва = '...'; let 我 = '...'; ``` -Технічно тут немає помилки. Такі імена дозволені, проте існує міжнародна традиція використовувати англійську мову в іменах змінних (наприклад, `yaLyublyuUkrainu` => `iLoveUkraine`). Навіть якщо ми пишемо маленький скрипт, в нього може бути тривале життя попереду. Людям з інших країн, можливо, доведеться прочитати його не один раз. +Технічно тут немає помилки. Такі імена дозволені, проте є міжнародна традиція використовувати англійську мову в іменах змінних (наприклад, `yaLyublyuUkrainu` => `iLoveUkraine`). Навіть якщо ми пишемо маленький скрипт, у нього може бути тривале життя попереду. Людям з інших країн, можливо, доведеться прочитати його не один раз. ```` ````warn header="Зарезервовані слова" -Існує [список зарезервованих слів](https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Lexical_grammar#Ключові_слова), які не можна використовувати в якості імен змінних, тому що ці слова використовує сама мова. +Є [список зарезервованих слів](https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Lexical_grammar#Ключові_слова), які не можна використовувати як імена змінних, тому що ці слова використовує сама мова. Наприклад: `let`, `class`, `return` і `function` зарезервовані. @@ -221,7 +221,7 @@ let return = 5; // також не можна називати змінну "ret ````warn header="Створення змінної без використання `use strict`" -Зазвичай нам потрібно оголосити змінну перед її використанням. Але в старі часи було технічно можливим створити змінну простим присвоєнням значення, без використання `let`. Це все ще працює, якщо не вмикати `суворий режим` в наших скриптах для підтримки сумісності зі старими сценаріями. +Зазвичай нам потрібно оголосити змінну перед її використанням. Але в старі часи було технічно можливим створити змінну простим присвоєнням значення, без використання `let`. Це все ще працює, якщо не вмикати `суворий режим` у наших скриптах для підтримання сумісності зі старими сценаріями. ```js run no-strict // "use strict" в цьому прикладі не використовується @@ -250,7 +250,7 @@ num = 5; // помилка: num не оголошено const myBirthday = '18.04.1982'; ``` -Змінні, оголошені за допомогою `const`, називаються "константами". Їх значення не можна переприсвоювати. Спроба це зробити призведе до помилки: +Змінні, оголошені за допомогою `const`, називаються "константами". Їхні значення не можна переприсвоювати. Спроба це зробити призведе до помилки: ```js run const myBirthday = '18.04.1982'; @@ -263,7 +263,7 @@ myBirthday = '01.01.2001'; // помилка, не можна перевизна ### Константи в верхньому регістрі -Широко поширена практика використання констант в якості псевдонімів для значень, які важко запам'ятати і які відомі до початку виконання скрипта. +Широко поширена практика використання констант як псевдонімів для значень, які важко запам'ятати і які відомі до початку виконання скрипта. Такі константи пишуться в верхньому регістрі з використанням підкреслень. @@ -283,10 +283,10 @@ alert(color); // #FF7F00 Переваги: - `COLOR_ORANGE` набагато легше запам'ятати, ніж `"#FF7F00"`. -- Набагато легше допустити помилку в `"#FF7F00"`, ніж при введені `COLOR_ORANGE`. +- Набагато легше допустити помилку в `"#FF7F00"`, ніж під час введення `COLOR_ORANGE`. - Під час читання коду `COLOR_ORANGE` набагато зрозуміліше, ніж `#FF7F00`. -Коли ми повинні використовувати для констант великі букви, а коли звичайні? Давайте це вияснимо. +Коли ми маємо використовувати для констант великі букви, а коли звичайні? Давайте це вияснимо. Назва "константа" лише означає, що змінна ніколи не зміниться. Але є константи, які відомі нам до виконання скрипта (наприклад, шістнадцяткове значення для червоного кольору), а є константи, які *вираховуються* в процесі виконання скрипта, але не змінюються після їхнього початкового присвоєння. @@ -301,13 +301,13 @@ const pageLoadTime = /* час, потрачений на завантаженн ## Придумуйте правильні імена -В розмові про змінні необхідно згадати ще одну дуже важливу річ -- правильні імена змінних. +У розмові про змінні необхідно згадати ще одну дуже важливу річ -- правильні імена змінних. Такі імена повинні мати чіткий і зрозумілий сенс, який описує дані, що в них зберігаються. -Іменування змінних -- одна з найважливіших і найскладніших навичок в програмуванні. Швидкий перегляд змінних може показати, чи код був написаний новачком чи досвідченим розробником. +Іменування змінних -- одна з найважливіших і найскладніших навичок у програмуванні. Швидкий перегляд змінних може показати, чи код був написаний новачком чи досвідченим розробником. -В реальному проєкті більшість часу тратиться на змінення і розширення існуючої кодової бази, а не на написання чогось цілком нового. Коли ми повертаємося до якогось коду після виконання чогось іншого впродовж тривалого часу, набагато легше знайти інформацію, яку добре позначено. Або, інакше кажучи, коли змінні мають хороші імена. +У реальному проєкті більшість часу тратиться на змінення і розширення наявної кодової бази, а не на написання чогось цілком нового. Коли ми повертаємося до якогось коду після виконання чогось іншого впродовж тривалого часу, набагато легше знайти інформацію, яку добре позначено. Або, інакше кажучи, коли змінні мають хороші імена. Будь ласка, приділіть час на обдумування правильного імені для змінної перед її оголошенням. Робіть так, і будете винагороджені. @@ -316,16 +316,16 @@ const pageLoadTime = /* час, потрачений на завантаженн - Використовуйте імена, які легко прочитати, наприклад, `userName` або `shoppingCart`. - Уникайте використання абревіатур або коротких імен, таких як `a`, `b`, `c`, окрім тих випадків, коли ви точно знаєте, що так потрібно. - Робіть імена максимально описовими і лаконічними. Наприклад, такі імена погані: `data` і `value`. Такі імена нічого не говорять. Їх можна використовувати лише тоді, коли з контексту очевидно, на які дані або значення посилається змінна. -- Узгодьте з вашою командою, які терміни будуть використовуватися. Якщо відвідувач сайту називається "user", тоді ми повинні давати відповідні імена іншим пов'язаним змінним: `currentUser` або `newUser`, замість `currentVisitor` або `newManInTown`. +- Погоджуйте з вашою командою, які терміни будуть використовуватися. Якщо відвідувач сайту називається "user", тоді ми маємо давати відповідні імена іншим пов'язаним змінним: `currentUser` або `newUser`, замість `currentVisitor` або `newManInTown`. Звучить легко? Це дійсно так, проте на практиці створення зрозумілих і коротких імен -- рідкість. Дійте. ```smart header="Перевикористовувати чи створювати?" -І остання примітка. Є ліниві програмісти, які замість оголошення нових змінних повторно використовують існуючі. +І остання примітка. Є ліниві програмісти, які замість оголошення нових змінних повторно використовують наявні. -В результаті їхні змінні схожі на коробки, в які люди кидають різні речі, не змінюючи на них наклейки. Що зараз знаходиться всередині коробки? Хто знає? Нам необхідно підійти поближче і перевірити. +У результаті їхні змінні схожі на коробки, в які люди кидають різні речі, не змінюючи на них наклейки. Що зараз міститься всередині коробки? Хто знає? Нам необхідно підійти поближче і перевірити. -Такі програмісти економлять трішки часу на оголошенні змінних, але втрачають вдесятеро більше при відлагодженні. +Такі програмісти економлять трішки часу на оголошенні змінних, але втрачають вдесятеро більше під час відлагодження. Додаткова змінна -- це добро, а не зло. @@ -340,4 +340,4 @@ const pageLoadTime = /* час, потрачений на завантаженн - `var` -- це застарілий спосіб оголошення змінної. Зазвичай ми не використовуємо його взагалі, але ми розглянемо тонкі відмінності від `let` в розділі , на випадок, якщо це все-таки знадобиться. - `const` -- це як `let`, але значення змінної не може змінюватися. -Змінні повинні називатися таким чином, щоб ми могли легко зрозуміти, що в середині них. +Змінні мають називатися так, щоб ми могли легко зрозуміти, що в середині них.