Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете
Основы программирования

Функции

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

Полезное

Способы записи функций

Кроме указанного в видео определения функции:

// const <name> = (<argument>) => {
//   return <expressions>;
// };

const identity = (value) => {
  return value;
};

Существует несколько других. Например, если у вас функция-однострочник, то можно использовать сокращенный синтаксис:

// const <name> = (<argument>) => <expressions>;
const identity = value => value;

В коде выше, мы опустили фигурные скобки и слово return, а также скобки вокруг аргумента (это можно делать только если у функции один аргумент).

Так же можно определять функции, используя ключевое слово function:

// Устаревший синтаксис, предпочтительным является () => {}. Кроме синтаксической разницы есть и семантическая.
// Она связана с пока не изученной темой this.
const identity = function(value) {
  return value;
};

или

// Такую функцию можно использовать до ее определения (в этом же файле)
function identity(value) {
  return value;
}

В наших курсах мы будем придерживаться () => {} такой формы записи по многим причинам. Во-первых, она лаконичнее, во-вторых, обладает одним важным свойством, которое будет изучено позже, ну а в-третьих, такой способ записи визуально стирает грань между функциями и данными, что очень пригодится нам в будущем.

Формальные и Фактические параметры функции

Немного терминологии. Формальными параметрами функции называются имена переменных в определении функции, например у функции const f = (a, b) => a - b; формальные параметры это a и b. А фактические параметры — это то, что было передано в функцию в момент вызова, например если предыдущую функцию вызвать так f(5, z), где const z = 8, то фактическими параметрами являются 5 и z. Результатом этого вызова будет число -3, а внутри функции, на момент конкретного вызова, параметр a становится равным 5 и b становится равным 8.

const f = x => x * x;

const y = 5;
console.log(f(y)); // 25
const z = 3;
console.log(f(z)); // 9

Как видите, нет никакой связи между именами формальных и фактических параметров, более того, у фактических параметров вообще может не быть имен, как в примере выше, где мы сразу передали число 5 в функцию. Что имеет значение, так это позиция. Во время вызова функции параметры должны передаваться в правильном порядке, и только тогда функция отработает, как предполагается.

const f = (a, b) => a - b;

const x = 5;
const y = 8;

console.log(f(x, y)); // -3
console.log(f(y, x)); // 3

Return

Вызов оператора return приводит к изменению течения программы. Последующие инструкции никогда не будут выполнены:

const identity = (value) => {
  return value;
  const a = 3 + 5; // этот код никогда не будет достигнут
};

console.log(identity(10)); // => 10

https://repl.it/@hexlet/programming-basics-functions-return


<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».