Кратко
Функция — это блок кода, который можно вызывать много раз. Вы определяете функцию один раз и используете сколько угодно раз. Параметры — это переменные функции. Return — это значение, которое функция возвращает.
Подробно
Зачем нужны функции?
Без функций каждый раз, когда нужно выполнить одно и то же действие, пришлось бы копировать код. Функция позволяет записать действие один раз и вызывать его сколько угодно раз.
Синтаксис: function greet(name) { return 'Привет, ' + name + '!'; }
let message = greet('Анна'); // 'Привет, Анна!'
Параметры vs Аргументы:
- Параметры — имена в определении функции: (name, age)
- Аргументы — реальные значения при вызове: greet('Анна', 25)
Return:
- return возвращает значение из функции
- Без return функция возвращает undefined
- return завершает функцию — код после return не выполняется
Function Declaration vs Expression: // Declaration — можно вызывать до определения (hoisting) function add(a, b) { return a + b; }
// Expression — нельзя вызывать до определения const multiply = function(a, b) { return a * b; }
Локальные переменные: Переменные, объявленные внутри функции, доступны только внутри неё.
Ментальная модель
Функция — как рецепт. Один раз записали: «возьмите муку, яйца, сахар → получите торт». Теперь можно «вызвать рецепт» сколько угодно раз, меняя только ингредиенты (параметры).
Примеры
**Самый простой:**
function greet(name) {
return 'Привет, ' + name + '!';
}
console.log(greet('Анна')); // Привет, Анна!
console.log(greet('Пётр')); // Привет, Пётр!Функция принимает имя и возвращает приветствие. Один код — много вызовов.
**Простой:**
function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
console.log(add(2, 3)); // 5
console.log(multiply(2, 3)); // 6Функции возвращают результат через return. Можно создавать функции для любых вычислений.
**Реальный пример:**
function calculateArea(width, height) {
if (width <= 0 || height <= 0) {
return null; // Ошибка: размеры должны быть положительными
}
return width * height;
}
let area = calculateArea(10, 5);
if (area !== null) {
console.log('Площадь: ' + area); // Площадь: 50
} else {
console.log('Неверные размеры');
}Функция может возвращать null для индикации ошибки — это.common pattern в JavaScript.
Частые ошибки
**Неправильно:** Забывать return
**Почему:** Без return функция возвращает undefined. Частая ошибка: function add(a, b) { a + b; }
**Правильно:** Всегда проверяйте, что функция возвращает ожидаемое значение.
**Неправильно:** Использовать console.log вместо return
**Почему:** console.log выводит в консоль, но не возвращает значение для дальнейшего использования.
**Правильно:** return — для возврата значения. console.log — для отладки.
**Неправильно:** Вызывать функцию до её определения (expression)
**Почему:** Function expression (const fn = function() {}) не поднимается (hoisted) вверх.
**Правильно:** Используйте function declaration, если нужен hoisting.
Важно запомнить
- Функция — блок кода для повторного использования
- Параметры — имена в определении, аргументы — значения при вызове
- return возвращает значение и завершает функцию
- Без return — undefined
- Локальные переменные доступны только внутри функции
Связь
Назад: Вы знаете циклы (J8) — теперь вы можете упаковывать повторяющуюся логику в переиспользуемые функции.
Вперёд: Следующий урок (J10) — стрелочные функции: более короткий синтаксис создания функций.