From 360e6788bdfdcabc21af33059c432832255c88ef Mon Sep 17 00:00:00 2001 From: Volodymyr V Date: Sat, 7 Nov 2020 00:36:04 +0100 Subject: [PATCH 01/15] First part of article.md --- .../15-function-basics/article.md | 116 +++++++++--------- 1 file changed, 59 insertions(+), 57 deletions(-) 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 b12d0b9e7..9a9237703 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -1,40 +1,42 @@ -# Functions +# Функції -Quite often we need to perform a similar action in many places of the script. +Досить часто ми потребуємо виконати подібну дію в багатьох місцях скрипту. -For example, we need to show a nice-looking message when a visitor logs in, logs out and maybe somewhere else. +Наприклад, нам треба показати приємне повідомлення, коли користувач входить або виходить з системи і може ще десь. -Functions are the main "building blocks" of the program. They allow the code to be called many times without repetition. +Функції це головні "будівні блоки" програми. Вони дозволяють робити ті самі дії багато разів в коді без повторення. -We've already seen examples of built-in functions, like `alert(message)`, `prompt(message, default)` and `confirm(question)`. But we can create functions of our own as well. +Ми вже зустрічались з такими вбудованими функціями, от-як `alert(message)`, `prompt(message, default)` і `confirm(question)`, але ми теж можемо творити свої функції. -## Function Declaration +## Декларація (оголошення) Функцій -To create a function we can use a *function declaration*. +Щоб створити функцію нам треба її _оголосити_. -It looks like this: +Це виглядає ось так: ```js function showMessage() { - alert( 'Hello everyone!' ); + alert('Всім привіт!'); } ``` -The `function` keyword goes first, then goes the *name of the function*, then a list of *parameters* between the parentheses (comma-separated, empty in the example above) and finally the code of the function, also named "the function body", between curly braces. +Спочатку ми пишемо `function` - це keyword (ключове слово), яке дає зрозуміти комп'ютеру, що далі буде оголошення функції. +Потім - _назву функції_, тоді список її _параметрів_ в дужках (відділені комою). Якщо параметрів немає, ми залишаємо _пусті дужки_. +І нарешті, код функції, також її називають _тілом функції_ між фігурними дужками. Функція може бути і без тіла, це Ви дізнаєтесь пізніше. ```js -function name(parameters) { - ...body... +function name(параметри) { + ...тіло... } ``` -Our new function can be called by its name: `showMessage()`. +Щоб викликати функцію, достатньо написати її ім'я і дужки: `showMessage()` -For instance: +Наприклад: ```js run function showMessage() { - alert( 'Hello everyone!' ); + alert( 'Шановні друзі!' ); } *!* @@ -43,88 +45,88 @@ showMessage(); */!* ``` -The call `showMessage()` executes the code of the function. Here we will see the message two times. +Виклик функції `showMessage()` поводує виконання коду в тілі функції. В цьому прикладі ми побачимо, що функція два рази показує повідомлення. -This example clearly demonstrates one of the main purposes of functions: to avoid code duplication. +Цей приклад яскраво демонструє одну з найшоловніших цілей функції: уникання повторення коду. -If we ever need to change the message or the way it is shown, it's enough to modify the code in one place: the function which outputs it. +Якщо нам треба змінити повідомлення або його вигляд, достатньо змодифікувати тіло функції, яке це повідомлення творить. -## Local variables +## Локальні (місцеві) змінні -A variable declared inside a function is only visible inside that function. +Змінна, яка оголошена в функції доступна лише в тій функції. -For example: +До прикладу: ```js run function showMessage() { *!* - let message = "Hello, I'm JavaScript!"; // local variable + let message = "Бажаю вам 36.6"; // локальна змінна */!* alert( message ); } -showMessage(); // Hello, I'm JavaScript! +showMessage(); // Бажаю вам 36.6 -alert( message ); // <-- Error! The variable is local to the function +alert( message ); // <-- Отакої! Змінна недоступна поза функцією! ``` -## Outer variables +## Зовнішні змінні -A function can access an outer variable as well, for example: +Функція може використовувати зовнішні змінні, ось наприлад: ```js run no-beautify -let *!*userName*/!* = 'John'; +let *!*userName*/!* = 'Іван'; function showMessage() { - let message = 'Hello, ' + *!*userName*/!*; + let message = 'Здаров, ' + *!*userName*/!*; alert(message); } -showMessage(); // Hello, John +showMessage(); // Здаров, Іван ``` -The function has full access to the outer variable. It can modify it as well. +Функція має повний доступ до зовнішньої змінної. Вона теж може її змінювати. -For instance: +Наприклад: ```js run -let *!*userName*/!* = 'John'; +let *!*userName*/!* = 'Іван'; function showMessage() { - *!*userName*/!* = "Bob"; // (1) changed the outer variable + *!*userName*/!* = "Бодя"; // (1) змінена зовнішня змінна - let message = 'Hello, ' + *!*userName*/!*; + let message = 'Здоровенькі були, ' + *!*userName*/!*; alert(message); } -alert( userName ); // *!*John*/!* before the function call +alert( userName ); // *!*Іван*/!* перед викликом функції showMessage showMessage(); -alert( userName ); // *!*Bob*/!*, the value was modified by the function +alert( userName ); // *!*Бодя*/!*, після виклика функції showMessage. Змінна була змінена цієї функцією ``` -The outer variable is only used if there's no local one. +Зовнішня змінна використовується тоді, коли немає локальної (місцевої). -If a same-named variable is declared inside the function then it *shadows* the outer one. For instance, in the code below the function uses the local `userName`. The outer one is ignored: +Якщо є дві змінні, одна - зовнішня, друга - локальна, тоді це називається _variable shadowing_, себто _затьмарення змінної_. Загалом це погана практика, але ось приклад, в якому локальна змінна `userName` має пріоритет перед зовнішньою змінною: ```js run -let userName = 'John'; +let userName = 'Іван'; // декларація зовнішньої змінної function showMessage() { *!* - let userName = "Bob"; // declare a local variable + let userName = "Бодя"; // декларація локальної змінної */!* - let message = 'Hello, ' + userName; // *!*Bob*/!* + let message = 'Здоров, ' + userName; // *!*Бодя*/!* alert(message); } -// the function will create and use its own userName +// функція завжди віддасть переавгу локальним змінним showMessage(); -alert( userName ); // *!*John*/!*, unchanged, the function did not access the outer variable +alert( userName ); // *!*Іван*/!*, без змін, функція не змінила глобальну змінну ``` ```smart header="Global variables" @@ -137,7 +139,7 @@ It's a good practice to minimize the use of global variables. Modern code has fe ## Parameters -We can pass arbitrary data to functions using parameters (also called *function arguments*) . +We can pass arbitrary data to functions using parameters (also called _function arguments_) . In the example below, the function has two parameters: `from` and `text`. @@ -156,7 +158,6 @@ When the function is called in lines `(*)` and `(**)`, the given values are copi Here's one more example: we have a variable `from` and pass it to the function. Please note: the function changes `from`, but the change is not seen outside, because a function always gets a copy of the value: - ```js run function showMessage(from, text) { @@ -182,7 +183,7 @@ If a parameter is not provided, then its value becomes `undefined`. For instance, the aforementioned function `showMessage(from, text)` can be called with a single argument: ```js -showMessage("Ann"); +showMessage('Ann'); ``` That's not an error. Such a call would output `"*Ann*: undefined"`. There's no `text`, so it's assumed that `text === undefined`. @@ -249,7 +250,7 @@ Modern JavaScript engines support the [nullish coalescing operator](info:nullish ```js run // if there's no "count" parameter, show "unknown" function showCount(count) { - alert(count ?? "unknown"); + alert(count ?? 'unknown'); } showCount(0); // 0 @@ -317,13 +318,14 @@ function showMovie(age) { In the code above, if `checkAge(age)` returns `false`, then `showMovie` won't proceed to the `alert`. -````smart header="A function with an empty `return` or without it returns `undefined`" -If a function does not return a value, it is the same as if it returns `undefined`: +````smart header="A function with an empty `return`or without it returns`undefined`" If a function does not return a value, it is the same as if it returns `undefined`: ```js run -function doNothing() { /* empty */ } +function doNothing() { + /* empty */ +} -alert( doNothing() === undefined ); // true +alert(doNothing() === undefined); // true ``` An empty `return` is also the same as `return undefined`: @@ -333,9 +335,10 @@ function doNothing() { return; } -alert( doNothing() === undefined ); // true +alert(doNothing() === undefined); // true ``` -```` + +````` ````warn header="Never add a newline between `return` and the value" For a long expression in `return`, it might be tempting to put it on a separate line, like this: @@ -363,7 +366,7 @@ return ( ) ``` And it will work just as we expect it to. -```` +````` ## Naming a function [#function-naming] @@ -427,12 +430,11 @@ The first variant uses a label: ```js function showPrimes(n) { nextPrime: for (let i = 2; i < n; i++) { - for (let j = 2; j < i; j++) { if (i % j == 0) continue nextPrime; } - alert( i ); // a prime + alert(i); // a prime } } ``` @@ -457,7 +459,7 @@ function isPrime(n) { } ``` -The second variant is easier to understand, isn't it? Instead of the code piece we see a name of the action (`isPrime`). Sometimes people refer to such code as *self-describing*. +The second variant is easier to understand, isn't it? Instead of the code piece we see a name of the action (`isPrime`). Sometimes people refer to such code as _self-describing_. So, functions can be created even if we don't intend to reuse them. They structure the code and make it readable. From 55203a92b091e946b2603c8b10664695fbc554bf Mon Sep 17 00:00:00 2001 From: Taras Date: Mon, 28 Dec 2020 13:09:19 +0200 Subject: [PATCH 02/15] Update 1-js/02-first-steps/15-function-basics/article.md Co-authored-by: UkrainianCitizen <31314423+UkrainianCitizen@users.noreply.github.com> --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9a9237703..9d1fb00d7 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -45,7 +45,7 @@ showMessage(); */!* ``` -Виклик функції `showMessage()` поводує виконання коду в тілі функції. В цьому прикладі ми побачимо, що функція два рази показує повідомлення. +Виклик `showMessage()` виконує код із тіла функції. В цьому випадку, ми побачимо повідомлення двічі. Цей приклад яскраво демонструє одну з найшоловніших цілей функції: уникання повторення коду. From 8a08422fd57ed7a9d16d9cdec2f3da503cd522fd Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:54:30 +0300 Subject: [PATCH 03/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9d1fb00d7..eddaa1c5b 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -1,6 +1,6 @@ # Функції -Досить часто ми потребуємо виконати подібну дію в багатьох місцях скрипту. +Досить часто нам потрібно виконати подібну дію в багатьох місцях скрипту. Наприклад, нам треба показати приємне повідомлення, коли користувач входить або виходить з системи і може ще десь. From d1b38cb9f8f3997266b2d6dd5e2eb2fa10adc6d0 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:54:55 +0300 Subject: [PATCH 04/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 eddaa1c5b..1ecd1974d 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -4,7 +4,7 @@ Наприклад, нам треба показати приємне повідомлення, коли користувач входить або виходить з системи і може ще десь. -Функції це головні "будівні блоки" програми. Вони дозволяють робити ті самі дії багато разів в коді без повторення. +Функції — це головні "будівельні блоки" програми. Вони дозволяють робити ті самі дії багато разів в коді без повторення. Ми вже зустрічались з такими вбудованими функціями, от-як `alert(message)`, `prompt(message, default)` і `confirm(question)`, але ми теж можемо творити свої функції. From 9347c84b4465d27f325bc1443ab02add91f84adf Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:56:31 +0300 Subject: [PATCH 05/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1ecd1974d..490486087 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -6,7 +6,7 @@ Функції — це головні "будівельні блоки" програми. Вони дозволяють робити ті самі дії багато разів в коді без повторення. -Ми вже зустрічались з такими вбудованими функціями, от-як `alert(message)`, `prompt(message, default)` і `confirm(question)`, але ми теж можемо творити свої функції. +Ми вже стикались з такими вбудованими функціями, як-от `alert(message)`, `prompt(message, default)` та `confirm(question)`. Але ми теж можемо створювати свої функції. ## Декларація (оголошення) Функцій From 99a46067b619ab2eefdabdc4cecd302add2b4ee7 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:57:10 +0300 Subject: [PATCH 06/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 490486087..191f689ec 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -8,7 +8,7 @@ Ми вже стикались з такими вбудованими функціями, як-от `alert(message)`, `prompt(message, default)` та `confirm(question)`. Але ми теж можемо створювати свої функції. -## Декларація (оголошення) Функцій +## Оголошення (декларація) функцій Щоб створити функцію нам треба її _оголосити_. From 7360f682aaece161ac57766527e2a2114a5e29e6 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:57:30 +0300 Subject: [PATCH 07/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 191f689ec..0740b8c5e 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -20,9 +20,7 @@ function showMessage() { } ``` -Спочатку ми пишемо `function` - це keyword (ключове слово), яке дає зрозуміти комп'ютеру, що далі буде оголошення функції. -Потім - _назву функції_, тоді список її _параметрів_ в дужках (відділені комою). Якщо параметрів немає, ми залишаємо _пусті дужки_. -І нарешті, код функції, також її називають _тілом функції_ між фігурними дужками. Функція може бути і без тіла, це Ви дізнаєтесь пізніше. +Спочатку ми пишемо `function` — це ключове слово (keyword), яке дає зрозуміти комп’ютеру, що далі буде оголошення функції. Потім — _назву функції_, тоді список її _параметрів_ в дужках (розділені комою). Якщо параметрів немає, ми залишаємо _пусті дужки_. І нарешті, код функції, який також називають _тілом функції_ між фігурними дужками. Функція може бути і без тіла, про це Ви дізнаєтесь пізніше. ```js function name(параметри) { From 81913d5837cbbc5de40daef102c55af6f530692f Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:58:06 +0300 Subject: [PATCH 08/15] Update 1-js/02-first-steps/15-function-basics/article.md Co-authored-by: UkrainianCitizen <31314423+UkrainianCitizen@users.noreply.github.com> --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0740b8c5e..0f7c74ccd 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -45,7 +45,7 @@ showMessage(); Виклик `showMessage()` виконує код із тіла функції. В цьому випадку, ми побачимо повідомлення двічі. -Цей приклад яскраво демонструє одну з найшоловніших цілей функції: уникання повторення коду. +Цей приклад яскраво демонструє одну з найголовніших цілей функції - уникнення повторення коду. Якщо нам треба змінити повідомлення або його вигляд, достатньо змодифікувати тіло функції, яке це повідомлення творить. From 9476b851d05822774f41b059217eefd2165529d9 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:58:19 +0300 Subject: [PATCH 09/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0f7c74ccd..ebc19d079 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -71,7 +71,7 @@ alert( message ); // <-- Отакої! Змінна недоступна поз ## Зовнішні змінні -Функція може використовувати зовнішні змінні, ось наприлад: +Функція може використовувати зовнішні змінні, ось наприклад: ```js run no-beautify let *!*userName*/!* = 'Іван'; From b68b89ac4bff8503bbe7a8535ee5072fbff36739 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:58:38 +0300 Subject: [PATCH 10/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ebc19d079..7811d3a33 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -102,7 +102,7 @@ alert( userName ); // *!*Іван*/!* перед викликом функції showMessage(); -alert( userName ); // *!*Бодя*/!*, після виклика функції showMessage. Змінна була змінена цієї функцією +alert( userName ); // *!*Бодя*/!*, значення було змінено після виклику функції showMessage ``` Зовнішня змінна використовується тоді, коли немає локальної (місцевої). From e55c3c9ea425be433e4231ece301eceb5f616acb Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 21:58:47 +0300 Subject: [PATCH 11/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7811d3a33..9b68a98b8 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -121,7 +121,7 @@ function showMessage() { alert(message); } -// функція завжди віддасть переавгу локальним змінним +// функція завжди віддасть перевагу локальним змінним showMessage(); alert( userName ); // *!*Іван*/!*, без змін, функція не змінила глобальну змінну From 6c99a89f57f4c0a07ed4f0dc912c1abe06927557 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 22:00:18 +0300 Subject: [PATCH 12/15] Update 1-js/02-first-steps/15-function-basics/article.md Co-authored-by: UkrainianCitizen <31314423+UkrainianCitizen@users.noreply.github.com> --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9b68a98b8..1e4cb851d 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -77,7 +77,7 @@ alert( message ); // <-- Отакої! Змінна недоступна поз let *!*userName*/!* = 'Іван'; function showMessage() { - let message = 'Здаров, ' + *!*userName*/!*; + let message = 'Привіт, ' + *!*userName*/!*; alert(message); } From 2ac2bc320d11cd50cf1d30c2d33ff5668ea15e36 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 22:14:34 +0300 Subject: [PATCH 13/15] Update 1-js/02-first-steps/15-function-basics/article.md Co-authored-by: UkrainianCitizen <31314423+UkrainianCitizen@users.noreply.github.com> --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1e4cb851d..7b70c715a 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -92,7 +92,7 @@ showMessage(); // Здаров, Іван let *!*userName*/!* = 'Іван'; function showMessage() { - *!*userName*/!* = "Бодя"; // (1) змінена зовнішня змінна + *!*userName*/!* = " Боб"; // (1) змінено зовнішню змінну let message = 'Здоровенькі були, ' + *!*userName*/!*; alert(message); From c4e63559d1bb14706c78b4a2b79307ab4396b318 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 22:23:17 +0300 Subject: [PATCH 14/15] Update 1-js/02-first-steps/15-function-basics/article.md --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7b70c715a..221bcc0a2 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -28,7 +28,7 @@ function name(параметри) { } ``` -Щоб викликати функцію, достатньо написати її ім'я і дужки: `showMessage()` +Щоб викликати функцію, достатньо написати її ім’я і дужки: `showMessage()`. Наприклад: From 8c3f1aeec825b88ddf98a5826760336db94c6d94 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 13 Jul 2021 22:24:05 +0300 Subject: [PATCH 15/15] Update 1-js/02-first-steps/15-function-basics/article.md Co-authored-by: UkrainianCitizen <31314423+UkrainianCitizen@users.noreply.github.com> --- 1-js/02-first-steps/15-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 221bcc0a2..189129f40 100644 --- a/1-js/02-first-steps/15-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -107,7 +107,7 @@ alert( userName ); // *!*Бодя*/!*, значення було змінено Зовнішня змінна використовується тоді, коли немає локальної (місцевої). -Якщо є дві змінні, одна - зовнішня, друга - локальна, тоді це називається _variable shadowing_, себто _затьмарення змінної_. Загалом це погана практика, але ось приклад, в якому локальна змінна `userName` має пріоритет перед зовнішньою змінною: +Якщо всередині функції є змінна з таким самим ім'ям, то вона *затьмарює* зовнішню. Наприклад, наступний код використовує локальну змінну `userName`. Зовнішня ігнорується. ```js run let userName = 'Іван'; // декларація зовнішньої змінної