2. Параметры и аргументы, возврат значений, замыкания, рекурсивные функции


Параметры и аргументы

Параметры по умолчанию

function greet(name = "Гость") {
    return `Привет, ${name}!`;
}

console.log(greet()); // "Привет, Гость!"
console.log(greet("Мария")); // "Привет, Мария!"

Оставшиеся параметры (rest parameters)

function sumAll(...numbers) {
    let total = 0;
    for (let num of numbers) {
        total += num;
    }
    return total;
}

console.log(sumAll(1, 2, 3, 4, 5)); // 15

Возврат значений

Функция может возвращать значение с помощью return. Если return нет, функция возвращает undefined.

function withoutReturn() {
    console.log("Я ничего не возвращаю");
}

const result = withoutReturn();
console.log(result); // undefined

Замыкания (Closures)

Функция, которая запоминает свое лексическое окружение.

function createCounter() {
    let count = 0;
    
    return function() {
        count++;
        return count;
    };
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

Рекурсивные функции

Функция, которая вызывает сама себя.

function factorial(n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

console.log(factorial(5)); // 120 (5 * 4 * 3 * 2 * 1)