Функция - это блок кода, который можно выполнить по имени. Функции нужны, чтобы не повторять один и тот же код, группировать логику в понятные части и делать программу более читаемой.
Зачем нужны функции
1) Повторное использование кода
Если одно и то же действие нужно в разных местах, его проще вынести в функцию.
function greet() {
console.log("Hello!");
}
greet();
greet();
2) Разделение логики на части
Код становится понятнее, когда сложная задача разбита на небольшие функции.
function hasReached18(age) {
return age >= 18;
}
console.log(hasReached18(20)); // true
3) Удобные “вход” и “выход”
Функция может принимать данные (параметры) и возвращать результат (return).
Как объявить функцию
Самый базовый вариант - function declaration:
function sum(a, b) {
return a + b;
}
console.log(sum(2, 3)); // 5
sum- имя функцииaиb- параметры (внутренние переменные функции)2и3- аргументы (значения при вызове)
Параметры и аргументы
Параметры - то, что указано в скобках при объявлении. Аргументы - то, что передается при вызове.
function multiply(x, y) {
return x * y;
}
const result = multiply(4, 5);
console.log(result); // 20
Если аргумент не передан, параметр будет undefined.
function show(value) {
console.log(value);
}
show(); // undefined
Что делает return
return:
- возвращает значение из функции наружу
- завершает выполнение функции (код ниже
returnне выполнится)
function double(n) {
return n * 2;
// console.log("never"); // эта строка не выполнится
}
console.log(double(7)); // 14
Если return не указан, функция возвращает undefined.
function logMessage() {
console.log("Hi");
}
const res = logMessage(); // "Hi"
console.log(res); // undefined
Ранний return (early return)
Ранний return помогает быстро выйти из функции, если дальше продолжать нет смысла. Это часто делает код проще, чем глубокие вложенности if.
Пример: проверка входных данных.
function toNumber(value) {
const n = Number(value);
if (Number.isNaN(n)) {
return null;
}
return n;
}
console.log(toNumber("10")); // 10
console.log(toNumber("x")); // null
Возврат разных типов
Функция может возвращать любое значение: число, строку, boolean, объект, массив.
function createUser(name) {
return { name: name, isActive: true };
}
console.log(createUser("Sam")); // { name: "Sam", isActive: true }
Область видимости: переменные внутри функции
Переменные, объявленные внутри функции, доступны только внутри нее.
function demo() {
const value = 123;
console.log(value);
}
demo();
// console.log(value); // ReferenceError
Это помогает изолировать детали реализации и избегать конфликтов имен.
Частые ошибки в начале
1) Путаница между “вывести” и “вернуть”
console.log показывает значение в консоли, но не возвращает его из функции.
function sum(a, b) {
console.log(a + b);
}
const result = sum(2, 3);
console.log(result); // undefined
Если нужен результат, используется return:
function sum2(a, b) {
return a + b;
}
console.log(sum2(2, 3)); // 5
2) Забыли вернуть значение
Если ожидается число/строка, а возвращается undefined, обычно в функции нет return или он стоит не во всех ветках.
function getLabel(isOk) {
if (isOk) {
return "ok";
}
// нет return во второй ветке
}
console.log(getLabel(false)); // undefined
Исправление:
function getLabel2(isOk) {
return isOk ? "ok" : "fail";
}
Что стоит запомнить
- Функции помогают не повторять код и делать программу структурированной.
- Параметры - при объявлении, аргументы - при вызове.
returnвозвращает значение и завершает функцию.- Без
returnрезультатом будетundefined. - Ранний
returnчасто делает код понятнее.