var theSet = ["Carel Haverbeke", "Maria van Brussel",
"Donald Duck"];
function isInSet(set, person) {
return set.indexOf(person.name) > -1;
}
console.log(ancestry.filter(function(person) {
return isInSet(theSet, person);
}));
console.log(ancestry.filter(isInSet.bind(null, theSet)));
Первый console.log понятен. А второй который с bind... я сначала не понял почему никуда не передается person, он ведь по идее будет undefined. Ведь filter принимает функцию, аргумент которой равен каждому отдельно взятому элементу перебираемого массива. А тут просто theSet.
Я правильно понимаю, что при такой записи возвращается функция, но в ней уже заранее прописан первый аргумент theSet? То есть получается обычный фильтр filter(function (person){return set.indexOf(person.name) > -1;}), а аргумент set как бы в памяти, если так можно выразиться? Просто хочу убедиться, что понял как работает второй вариант вызова.
Да, Вы понимаете правильно.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind
fun.bind(thisArg[, arg1[, arg2[, ...]]])
arg1, arg2, ... - Arguments to prepend to arguments provided to the bound function when invoking the target function.
arg1, arg2, ... - параметры, которые будут переданы в функцию fun, перед теми, которые
будут переданы в функцию, возвращаемую fun.bind, кодом, который будет
эту функцию вызывать
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости