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));