Я изучаю функции каррирования в JS и застрял с этой проблемой.
Моя цель - упорядочить массив объектов по непроизвольному свойству.
let people = [
{ name: 'Bob', age: 27 },
{ name: 'Al', age: 47 }
];
var compare = function(a, b) {
if (a[property] < b[property]) return -1;
if (a[property] > b[property]) return 1;
return 0;
};
function sortBy(property) {
/* // this works
return function compare(a, b) {
if (a[property] < b[property]) return -1;
if (a[property] > b[property]) return 1;
return 0;
};
*/
// this doesn't work
return compare;
}
people.sort(sortBy('name'));
console.log(people);
С этим кодом я получаю эту ошибку:
if (a[property] < b[property]) return -1;
^
ReferenceError: property is not defined
Почему, если я определяю функцию compare
внутри функции sortBy
, я не получаю никакой ошибки, а вместо этого, если я определяю compare
внешняя функция Я получаю сообщение об ошибке?
Функция compare
не должна заключаться в закрытие?