Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс JavaScript
/

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

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

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

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

Чтобы функция отдала результат, используется специальное ключевое слово return. Оно завершает выполнение функции и указывает, что именно нужно вернуть.

Вот функция, которая делает текст заглавным:

function shout(name) {
  return name.toUpperCase();
}

const result = shout('hexlet');
console.log(result); // => HEXLET

const result2 = shout('code-basics');
console.log(result2); // => CODE-BASICS

При вызове shout('hexlet') сначала выполняется выражение name.toUpperCase(), оно возвращает строку 'HEXLET'. Затем return отдаёт это значение наружу — туда, откуда была вызвана функция. В нашем случае оно сохраняется в переменную result, а потом выводится на экран.

Разница между return и console.log

В отличие от console.log(), return ничего не печатает. Он просто возвращает значение, а решение о том, что с ним делать, принимает вызывающий код.

// Эта функция выводит, но ничего не возвращает
function printSum(a, b) {
  console.log(a + b);
}

// Эта функция возвращает результат
function getSum(a, b) {
  return a + b;
}

// Возвращённый результат можно использовать дальше
const sum = getSum(3, 4);
console.log(sum * 2); // => 14

Возврат вычисленного выражения

В return обычно указывают выражение, которое сначала вычисляется, а потом результат передаётся наружу:

function fullName(first, last) {
  return `${first} ${last}`;
}

const name = fullName('Aria', 'Stark');
console.log(name); // => Aria Stark

Сначала вычисляется шаблонная строка, и уже готовое значение возвращается наружу.

Многострочные функции

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

function formatName(name) {
  const clean = name.trim();
  const uppercased = clean.toUpperCase();
  return uppercased;
}

console.log(formatName('  hexlet  ')); // => HEXLET

Код после return

Когда выполнение доходит до return, функция немедленно завершается. Всё, что написано после него внутри функции, не выполнится:

function example() {
  return 'готово';
  console.log('этот код никогда не выполнится');
}

console.log(example()); // => готово

Поэтому return обычно пишут в конце логики. Позже, когда мы дойдём до условных конструкций, вы увидите, что таких «концов» внутри одной функции может быть несколько.

Задание

Допишите функцию truncate(), которая обрезает переданную строку до указанного количества символов, добавляет в конце многоточие и возвращает получившуюся строку. Подобная логика часто используется на сайтах, чтобы отобразить длинный текст в сокращенном виде.

Функция принимает два параметра:

  1. Строка, которую нужно обрезать
  2. Число символов, которые нужно оставить

Пример того, как должна работать написанная вами функция:

// Передаём текст напрямую
// Обрезаем текст, оставляя 2 символа
truncate('hexlet', 2); // he...

// Через переменную
const text = 'it works!';
// Обрезаем текст, оставляя 4 символа
truncate(text, 4); // it w...

Вам нужно самостоятельно реализовать функцию truncate(), в JavaScript такой функции не существует. Реализовать эту функцию можно различными способами, подскажем лишь один из них. Для решения этим способом вам понадобится взять подстроку из строки, переданной первым параметром в функцию. Используйте для этого метод slice(). Подумайте, исходя из задания, с какого индекса и по какой вам надо извлечь подстроку?

const word = 'welcome';
// Передавать параметры в метод можно через переменные
const index = 3;
word.slice(0, index); // wel

С точки зрения проверочной системы не имеет значения, каким из способов будет реализована функция truncate() внутри, главное – чтобы она выполняла поставленную задачу

Коммерческий опыт и Трудоустройство

Полезное

  • Подробнее о return

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс JavaScript
/

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

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

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

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

Чтобы функция отдала результат, используется специальное ключевое слово return. Оно завершает выполнение функции и указывает, что именно нужно вернуть.

Вот функция, которая делает текст заглавным:

function shout(name) {
  return name.toUpperCase();
}

const result = shout('hexlet');
console.log(result); // => HEXLET

const result2 = shout('code-basics');
console.log(result2); // => CODE-BASICS

При вызове shout('hexlet') сначала выполняется выражение name.toUpperCase(), оно возвращает строку 'HEXLET'. Затем return отдаёт это значение наружу — туда, откуда была вызвана функция. В нашем случае оно сохраняется в переменную result, а потом выводится на экран.

Разница между return и console.log

В отличие от console.log(), return ничего не печатает. Он просто возвращает значение, а решение о том, что с ним делать, принимает вызывающий код.

// Эта функция выводит, но ничего не возвращает
function printSum(a, b) {
  console.log(a + b);
}

// Эта функция возвращает результат
function getSum(a, b) {
  return a + b;
}

// Возвращённый результат можно использовать дальше
const sum = getSum(3, 4);
console.log(sum * 2); // => 14

Возврат вычисленного выражения

В return обычно указывают выражение, которое сначала вычисляется, а потом результат передаётся наружу:

function fullName(first, last) {
  return `${first} ${last}`;
}

const name = fullName('Aria', 'Stark');
console.log(name); // => Aria Stark

Сначала вычисляется шаблонная строка, и уже готовое значение возвращается наружу.

Многострочные функции

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

function formatName(name) {
  const clean = name.trim();
  const uppercased = clean.toUpperCase();
  return uppercased;
}

console.log(formatName('  hexlet  ')); // => HEXLET

Код после return

Когда выполнение доходит до return, функция немедленно завершается. Всё, что написано после него внутри функции, не выполнится:

function example() {
  return 'готово';
  console.log('этот код никогда не выполнится');
}

console.log(example()); // => готово

Поэтому return обычно пишут в конце логики. Позже, когда мы дойдём до условных конструкций, вы увидите, что таких «концов» внутри одной функции может быть несколько.

Задание

Допишите функцию truncate(), которая обрезает переданную строку до указанного количества символов, добавляет в конце многоточие и возвращает получившуюся строку. Подобная логика часто используется на сайтах, чтобы отобразить длинный текст в сокращенном виде.

Функция принимает два параметра:

  1. Строка, которую нужно обрезать
  2. Число символов, которые нужно оставить

Пример того, как должна работать написанная вами функция:

// Передаём текст напрямую
// Обрезаем текст, оставляя 2 символа
truncate('hexlet', 2); // he...

// Через переменную
const text = 'it works!';
// Обрезаем текст, оставляя 4 символа
truncate(text, 4); // it w...

Вам нужно самостоятельно реализовать функцию truncate(), в JavaScript такой функции не существует. Реализовать эту функцию можно различными способами, подскажем лишь один из них. Для решения этим способом вам понадобится взять подстроку из строки, переданной первым параметром в функцию. Используйте для этого метод slice(). Подумайте, исходя из задания, с какого индекса и по какой вам надо извлечь подстроку?

const word = 'welcome';
// Передавать параметры в метод можно через переменные
const index = 3;
word.slice(0, index); // wel

С точки зрения проверочной системы не имеет значения, каким из способов будет реализована функция truncate() внутри, главное – чтобы она выполняла поставленную задачу

Коммерческий опыт и Трудоустройство

Полезное

  • Подробнее о return

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

// @ts-check

import { expect, test } from 'vitest';
import f from './index.js';

test('return', () => {
  expect(f('text', 3)).toBe('tex...');
  expect(f('hexlet learning', 6)).toBe('hexlet...');
});
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →