Чтобы понять пример, нужно знать и использовать функции обратного вызова, анонимные функции и синтаксис стрелки.
Рассмотрим код:
function reject(array, iteratorFunction) {
return array.filter(arrItem => !iteratorFunction(arrItem));
}
Определение массива filter
: метод filter()
создает новый массив со всеми элементами, которые проходят тест, реализованный предоставленной функцией обратного вызова.
Что такое функция обратного вызова? Функция обратного вызова - это функция, передаваемая в другую функцию в качестве аргумента, которая затем вызывается внутри внешней функции для выполнения некоторой процедуры или действия. Этот вызов происходит, когда функция с ее телом (кодом) фактически передается во время вызова.
Следующий код является функцией обратного вызова: arrItem => !iteratorFunction(arrItem)
Функция возвращает логическое значение. Функция написана как синтаксис стрелки.
Это также можно записать как:
function(arrItem) {
return !iteratorFunction(arrItem);
}
iteratorFunction
также является функцией обратного вызова, которая возвращает логическое значение. "!" оператор возвращает возвращаемое логическое значение как отрицательное (превращает true в false и наоборот).
Итак, следующий reject
код функции работает аналогично:
function reject(array, iteratorFunction) {
return array.filter(function(arrItem) {
return !iteratorFunction(arrItem);
});
}
- то же самое, что и выше -
function reject(array, iteratorFunction) {
let myCallback = function(arrItem) {
return !iteratorFunction(arrItem);
};
return array.filter(myCallback);
}
iteratorFunction - функция обратного вызова
В примере рассмотрим этот код: num => num > 15
Код представляет собой синтаксис стрелки функции обратного вызова. Это также можно записать как:
function(num) {
return num > 15;
}
Это означает, что код:
let result = reject(numbers, num => num > 15);
-также можно записать как-
let result = reject(numbers, function(num) {return num > 15});
- также можно записать как -
let myCallback = function(num) {
return num > 15;
}
let result = reject(numbers, myCallback);
Результат: [ 10 ]