Learn JavaScript

Функции в JavaScript: зачем нужны и как работает return

Функция - это блок кода, который можно выполнить по имени. Функции нужны, чтобы не повторять один и тот же код, группировать логику в понятные части и делать программу более читаемой.

Зачем нужны функции

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 часто делает код понятнее.