@Alex_87

Задача по теме замыкание?

Добрый день! Задача по сортировке(по счёту №4). Ссылка: https://learn.javascript.ru/closures-usage
Прошу пояснить такой момент. В задаче с сортировкой, я не понимаю, как работает эта функция
function byField(field) {
return function(a, b) {
return a[field] > b[field] ? 1 : -1;
}
}


Каким образом, в a[field] попадает Вася, а в b[field] попадает Петя? .... И, почему здесь, всё работает через точку?
// по полю name (Вася, Маша, Петя)
users.sort(function(a, b) {
return a.name > b.name ? 1 : -1;
});

// по полю age (Маша, Вася, Петя)
users.sort(function(a, b) {
return a.age > b.age ? 1 : -1;
});
  • Вопрос задан
  • 762 просмотра
Пригласить эксперта
Ответы на вопрос 1
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
Код
let data = (function(a) {
var field = "name";
return a[field];
})({ name: "Петя"});


эквивалентен коду
let data = (function(a) {
return a.name;
})({ name: "Вася"});


поэтому функция byField возвращает функцию возвращающую значение обьекта по указанному свойству, с использованием замыкания.

let data = (function(a, field) {
return a[field];
})({ name: "Петя"}, "name");
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы