Как происходит передача аргумента в колбэк?

81
08 февраля 2022, 06:30
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
function check(word){
return word.length > 6
}
const result = words.filter(check);

В объявлении функции "check" мы передаем ей параметр "word", а когда вызываем ее в качестве колбэка, мы ничего ей не передаем. Каким образом она понимает что нужно взять в качестве аргумента элемент массива на котором она вызвана?

Answer 1

function myObject(arg) { 
  this.obj = arg 
 
  this.filter = function(callback) { 
    const newArray = [] 
    for (let i = 0; i < this.obj.length; i++) 
 //           вот так и происходит 
 //      	      | 
 //                   | 
 //                   V 
      if (callback(this.obj[i])) newArray.push(this.obj[i]) 
 
    return newArray 
  } 
} 
 
function check(word) { 
  return word.length < 6 
} 
 
const words = new myObject(['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']) 
const result = words.filter(check) 
 
console.log(result)

Answer 2

В спецификации filter указано, что в callback, коим у вас является функция check автоматически передаются аргументы. Первый из которых и обязательный - element. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

В вашем случае element - это элемент массива words. Метод filter сам вызывает этот callback с нужным аргументом.

READ ALSO
Удалить GET Params в URL

Удалить GET Params в URL

Так получаю GET params после того как все флажки сняты с checkbox $("checkbox_campaigns_id") так добавляю параметры к определенным ссылкам

72
Как сделать чекбокс для активации группы

Как сделать чекбокс для активации группы

Мне нужно чтобы при нажатие на основной чекбокс активировались все как это сделать

70
Отключить разбиение на чанки Webpack

Отключить разбиение на чанки Webpack

Проект на Backbonejs + RequireJs собирается с помощью webpack, содержимое webpack

82