Что такое стрелочная функция? -Часть 2

Неявный возврат

В JavaScript неявный return undefined возникает, когда в функции опущен оператор return. Слово неявный в данном контексте относится к тому, что подразумевается, но не указывается напрямую. Другими словами, не было return undefined, так как это привело бы к undefined.

Пример:

const sum = (a, b) => {
   a + b;
}

sum(2, 5); // undefined
Войти в полноэкранный режим Выход из полноэкранного режима

В приведенном выше примере sum(2,5) возвращает undefined, потому что в теле функции нет ключевого слова return.

Пример:

// implicit return
const sum = (a, b) => a + b;

sum(2, 5); // 7
Вход в полноэкранный режим Выход из полноэкранного режима

Ключевое слово return и фигурные скобки не нужны, если ваша функция стрелки имеет длину всего в одну строку.

//without implicit return
const canVote = age => {
   return age >= 18;
}
Вход в полноэкранный режим Выход из полноэкранного режима

Давайте воспользуемся неявным return:

  • удалив фигурные скобки

  • удалив ключевое слово return.

const canVote = age => age >= 18;
Вход в полноэкранный режим Выйти из полноэкранного режима

Это самый ясный и короткий подход к написанию данной функции.

Методы массивов, использующие неявные возвраты

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

Array.filter()

//without implicit return
const ages = [10, 15, 21 45];

const agesAboveTwentyOne = ages.filter(function(age) {
   return age > 21;
});
console.log(agesAboveTwentyOne); //[21, 45]


//with implicit return
const agesAboveTwentyOne = ages.filter(age => age > 21);
Войти в полноэкранный режим Выйти из полноэкранного режима

Мы фильтруем ages, где age больше 21.

Array.find()

//without implicit return
const furBabies = ['Dutches', 'Monty', 'Benny', 'Lucky', 'Chili'];

const findNames = furBabies.find(function(furBaby) {
   return furBaby === 'Benny';
});
console.log(findNames); // 'Benny'


//with implicit return
const findNames = furBabies.find(furBaby => furBaby === 'Benny');
Вход в полноэкранный режим Выход из полноэкранного режима

Из массива furBabies найдите furBaby, который равен строке 'Benny'.

Array.map()

//Without implicit return
const numbers = [2, 6, 8, 10];

const tripled = numbers.map(function(number){
  return number * 3;
});
console.log(tripled); //[6, 18, 24, 30]


//with implicit return
const tripled = numbers.map(number => number *3);
Вход в полноэкранный режим Выйти из полноэкранного режима

Создайте новый массив на основе массива numbers, где каждое number умножается на 3.

Пожалуйста, поделитесь своими мыслями в разделе комментариев ниже. Я с удовольствием выслушаю ваши мысли. Или, пожалуйста, загляните ко мне и скажите «👋».

Оцените статью
devanswers.ru
Добавить комментарий