JavaScript

Правильно ли я упростил коллбэк через стрелочную функцию?

 let result = every([1, 2, 3, 4, 5], function(elem) { 
if (elem > 0) {
return true;

} else {
return false;
}

});

 Упрощение:

let result = every([1, 2, 3, 4, 5], (elem) => {
(elem > 0) ? true : false;
});
ЗЫ как сделать так, чтобы результат выводился в консоль? Почему-то через console.log не выводит и пишет, что every не найдена
Во-первых, функция every вызывается не сама по себе, а у массива.
Во-вторых, если вы задали тело лямбда-функции с фигурными скобками, тогда придется использовать return:
 let result = [1, 2, 3, 4, 5].every((elem) => {   
return (elem > 0) ? true : false;
});
Теперь рассмотрим эту строчку:
 return (elem > 0) ? true : false;  
В переводе на русский: «Если (elem > 0) истинно (то есть равно true), тогда вернуть true; а если нет (то есть равно false), тогда вернуть false».

Заметьте: возвращаемый результат всегда совпадает со значением логического выражения elem > 0. Поэтому мы можем написать эту строчку еще короче:
 return elem > 0; 
А раз тут нет никаких сложных действий, то и от фигурных скобок с return можно избавиться:
 let result = [1, 2, 3, 4, 5].every((elem) => elem > 0); 
Лёша Мирук
Лёша Мирук
94 120
Лучший ответ
Нет. Правильно так:
 const result = [1, 2, 3, 4, 5].every(elem => elem > 0); 
every() это метод самого массива, туда сам массив не передаётся.
 (elem > 0) ? true : false; 
Упрощается до
 elem > 0 
Так как это выражение и так возвращает boolean (true/false).

В консоль выводим так:
 сonsole.log(result); 
Про фигурные скобки попробую тоже пояснить.
Если стрелочная функция без фигурных скобок, то подразумевается что всё выражение после "=>" возвращается функцией. Если фигурные скобки поставил, то return обязателен, если функция того требует.
Pehat Avzalov
Pehat Avzalov
23 960