@Swaer

Кто может пояснить код?

function inBetween(a,b){
  return function(){
    console.log(arguments)
  }
};
let arr = [1, 2, 3, 4, 5, 6, 7];
console.log(arr.filter(inBetween(3, 6)))


не могу понять, почему arguments указывает на параметры не свои(где пусто) или в функции, в которой она создана, а на параметры функции callback в фильтре, а именно item,i,arr
Вроде понимаю, что такое замыкание, но тут не могу вдуплить
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вызов inBetween(3, 6) возвращает не строку, не число, а функкцию.

Можно длиннее записать:
var daFunc = inBetween(3, 6); // daFunc это функция

arr.filter(daFunc);

Почти1 то же, что:
var daFunc = function() {
  console.log(arguments);
}

arr.filter(daFunc);
1«Почти» — потому, что контекст тут другой будет. Всякие a и b не будут определены.

Или:
function daFunc() { console.log(arguments); }

arr.filter(daFunc);

Или:
arr.filter( function() { console.log(arguments); });


В общем, arguments там никакой не внешний / родительский / фильтрованный, а свой собственный.
С чем вызвали — то и получили. Вызвали в фильтре – аргументы фильтровские и получили.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 14:12
30000 руб./за проект
19 апр. 2024, в 14:10
500 руб./за проект