JavaScript · Синтаксис · Початковий рівень

Функції

10 завдань

Базові вправи з функцій JavaScript: оголошення функцій, параметри, return, перевірки чисел і рядків, робота з масивами і простими обчисленнями.

Що таке функції і навіщо вони потрібні

#
Функція — це іменований блок коду, який можна викликати за іменем звідусіль і скільки завгодно разів. Суть не в тому, щоб менше друкувати, — а в тому, щоб дати поведінці ім'я і зробити код тестованим і придатним для повторного використання. Без функцій, якщо потрібно перевірити, чи число парне, в трьох різних місцях, доведеться тричі копіювати ту саму перевірку if (n % 2 === 0). Коли логіка змінюється — виправляєте в трьох місцях. З функцією виправляєте один раз. Функція також створює чіткий контракт: ось що входить (параметри), ось що виходить (повернуте значення). Цей контракт можна перевірити окремо. У цих завданнях кожне завдання має однаковий формат: напишіть функцію, яка робить одну конкретну річ. Це змушує думати про вхід і вихід окремо від решти коду — що і є ключовою навичкою.

function, параметри і return

#
JavaScript має два основних способи визначити функцію. Класичне оголошення: ```javascript function square(n) { return n * n; } const result = square(5); console.log(result); // 25 ``` І стрілкова функція, яка поширена в сучасному коді: ```javascript const square = (n) => { return n * n; }; // Коли тіло — один вираз, фігурні дужки і return можна опустити: const square = (n) => n * n; ``` Обидві форми працюють у цих завданнях. Класичні оголошення функцій піднімаються (hoisting) — їх можна викликати до рядка, де вони визначені. Стрілкові функції, присвоєні до const, не піднімаються. Функція без оператора return повертає undefined (аналог Python's None). Завжди перевіряйте, що ви справді повертаєте значення. Замість Python's pass — просто порожнє тіло: ```javascript function square(n) { // реалізувати тут } ``` Параметри є локальними для функції. Зміна параметра не впливає на змінні зовні. return — правильний спосіб повернути результат викликачу.

Три патерни функцій

#
Більшість завдань у цій темі відповідають одному з трьох патернів. Обчислити і повернути — застосовуємо операцію і повертаємо результат: ```javascript function power(base, exp) { return base ** exp; } console.log(power(2, 10)); // 1024 ``` ** — оператор піднесення до степеня, доступний з ES2016. Math.pow(base, exp) — старший еквівалент. Перевірити і повернути булеве значення — перевіряємо умову, повертаємо true або false: ```javascript function isEven(n) { return n % 2 === 0; } console.log(isEven(8)); // true console.log(isEven(7)); // false ``` n % 2 === 0 вже обчислюється до true або false — повертаємо безпосередньо, без if. Ітерувати і зібрати — проходимо по масиву всередині функції, накопичуємо результат, повертаємо: ```javascript function multiply(numbers) { let result = 1; for (const n of numbers) { result *= n; } return result; } console.log(multiply([3, 4, 100, 15])); // 18000 ``` Рядкові операції часто комбінують вбудований метод із return: ```javascript function toUpper(text) { return text.toUpperCase(); } ``` Коротко, але корисно — функції не мають бути довгими, щоб мати сенс.
01

Квадрат числа функцією.

#

Напишіть функцію, яка приймає одне число і повертає його квадрат.

function square(n) {
    // ваш код тут
}
let result = square(5);
console.log(result);
result = square(2);
console.log(result);
result = square(25);
console.log(result);
Рішення
function square(n) {
    return n * n;
}
let result = square(5);
console.log(result);
result = square(2);
console.log(result);
result = square(25);
console.log(result);

// або так можна через оператор степеня
function square(n) {
    return n ** 2;
}
02

Більше число функцією.

#

Напишіть функцію, яка приймає два числа і повертає більше з них. Якщо вони рівні, то повертає друге.

function maxOfTwo(a, b) {
    // ваш код тут
}
console.log(maxOfTwo(10, 7));
Рішення
function maxOfTwo(a, b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}
console.log(maxOfTwo(10, 7));
03

Довжина рядка без len.

#

Напишіть функцію, яка приймає рядок і повертає його довжину (не використовувати властивість .length).

function stringLength(text) {
    // ваш код тут
}
console.log(stringLength("javascript"));
Рішення
function stringLength(text) {
    let count = 0;
    for (let _ of text) {
        count += 1;
    }
    return count;
}
console.log(stringLength("javascript"));
04

Парність через функцію.

#

Напишіть функцію, яка приймає число і повертає true , якщо число парне, інакше false .

function isEven(n) {
    // ваш код тут
}
console.log(isEven(8));
Рішення
function isEven(n) {
    if (n % 2 === 0) {
        return true;
    } else {
        return false;
    }
}
console.log(isEven(8));

// або так можна через змінну
function isEven(n) {
    let result = n % 2 === 0;
    return result;
}
05

Сума двох чисел функцією.

#

Напишіть функцію, яка приймає два числа і повертає їх суму.

function add(a, b) {
    // ваш код тут
}
console.log(add(3, 4));
Рішення
function add(a, b) {
    return a + b;
}
console.log(add(3, 4));
06

Рядок у верхньому регістрі.

#

Напишіть функцію, яка приймає рядок і повертає новий рядок, символи у верхньому регістрі.

function toUpper(text) {
    // ваш код тут
}
console.log(toUpper("hello"));
Рішення
function toUpper(text) {
    return text.toUpperCase();
}
console.log(toUpper("hello"));
07

Додатне число функцією.

#

Напишіть функцію, яка приймає число і повертає true , якщо воно додатне, інакше false .

function isPositive(n) {
    // ваш код тут
}
console.log(isPositive(-3));
Рішення
function isPositive(n) {
    if (n > 0) {
        return true;
    } else {
        return false;
    }
}
console.log(isPositive(-3));
08

Піднесення до степеня.

#

Напишіть функцію, яка приймає два числа: основу та показник степеня — і повертає результат піднесення основи до степеня.

function power(base, exp) {
    // ваш код тут
}
console.log(power(2, 3));
Рішення
function power(base, exp) {
    let result = 1;
    for (let _ = 0; _ < exp; _++) {
        result *= base;
    }
    return result;
}
console.log(power(2, 3));

// або так можна через оператор **
function power(a, b) {
    return a ** b;
}
09

Добуток чисел масиву.

#

Напишіть функцію, яка приймає масив чисел і повертає їх добуток.

function multiply(sequence) {
    // ваш код тут
}
console.log(multiply([3, 4, 100, 15]));
Рішення
function multiply(sequence) {
    let result = 1;
    for (let n of sequence) {
        result *= n;
    }
    return result;
}
console.log(multiply([3, 4, 100, 15]));
10

Повторення рядка функцією.

#

Напишіть функцію, яка приймає рядок і число, та повертає цей рядок, повторений вказану кількість разів.

function repeatText(text, count) {
    // ваш код тут
}
console.log(repeatText(")", 3));
Рішення
function repeatText(text, count) {
    let result = "";
    for (let _ = 0; _ < count; _++) {
        result += text;
    }
    return result;
}
console.log(repeatText(")", 3));