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

В модуле «Вызов функций» мы в основном работали с функциями, которые возвращают результат, а не выводят его на экран. Честно говоря, вывод на экран — фактически обучающий элемент. В реальном коде на экран никто ничего не выводит (за исключением утилит командной строки). Функции возвращают данные, которые потребляются другими функциями.

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

Начнем с тривиального примера: создадим и вызовем функцию, которая принимает два числа и возвращает первое число минус второе. Назовём её sub, от англ. “subtract” — «вычесть»:

const sub = (a, b) => {
  const result = a - b;
  return result;
};

const result = sub(10, 7);
console.log(result); // => 3

Возврат значения задаётся специальной инструкцией return. Cправа от return помещается выражение. Любое выражение. То есть, мы можем делать вычисления сразу после return без создания константы result:

const sub = (a, b) => {
  // Сначала вычисляется выражение справа от `return`
  // затем получившееся значение возвращается
  return a - b;
};

console.log(sub(2018, 1975)); // => 43

Интерпретатор, встречая return, останавливает дальнейшее выполнение функции и возвращает указанное справа значение в то место, где была вызвана функция.

Посмотрите на эту функцию:

const foo = () => {
  return 7;
  return 10;
};

console.log(foo());

Что выведется на экран?

Правильный ответ: 7. Функция всегда будет возвращать только число 7, так как интерпретатор, наткнувшись на первый return, остановит выполнение функции. Строчка кода return 10; никогда не выполнится.

Задание

Сэм создаёт генеалогические деревья разных семей. Ему постоянно приходится рассчитывать количество места, занимаемое именами родителей на экране.

Создайте функцию getParentNamesTotalLength для Сэма. Она должна принимать один аргумент — имя ребенка, и возвращать количество символов в именах матери и отца суммарно. Функция не должна выводить ничего на экран, только возвращать число.

Примеры вызова:

getParentNamesTotalLength('Daenerys Targaryen'); // => 35

Для получения имён родителей используйте уже существующую функцию getParentFor:

  • Получение имени матери getParentFor(child, 'mother'), где child — имя ребёнка.
  • Получение имени отца getParentFor(child, 'father'), где child — имя ребёнка

Вам не нужно вызывать свою функцию, только определить её.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.