@HelloWorldForJs

Как свойство sold попадает через агументов col.A и col.B и куда или в какую перменную возвращает return?

let products = [ { name: "Grapefruit", calories: 170, color: "red", sold: 8200 },
{ name: "Orange", calories: 160, color: "orange", sold: 12101 },
{ name: "Cola", calories: 210, color: "caramel", sold: 25412 },
{ name: "Diet Cola", calories: 0, color: "caramel", sold: 43922 },
{ name: "Lemon", calories: 200, color: "clear", sold: 14983 },
{ name: "Raspberry", calories: 180, color: "pink", sold: 9427 },
{ name: "Root Beer", calories: 200, color: "caramel", sold: 9909 },
{ name: "Water", calories: 0, color: "clear", sold: 62123 }
];

let compareSold = function(colA, colB){
return colA.sold - colB.sold;
};

products.sort(compareSold);
console.log("Products sorted by sold:");

Добрый день. Я только недавно начал изучать js и сейчас столкнулся с такой проблемой, не могу понять как свойство sold попадает в аргументы colA и colB функции. Насколько я знаю, передать аргументы в функцию можно только с помощью вызова функции, а у меня тут просто передача (не вызов) функции в метод sort. Еще не могу понять, куда return возвращет colA.sold - colB.sold?
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
как свойство sold попадает в аргументы colA и colB функции

По ссылке. У Вас массив объектов. Объекты передаются по ссылке. Тык. То есть на каждом вызове функции colA и colB это будут объекты из массива, на котором вызван sort.

Насколько я знаю, передать аргументы в функцию можно только с помощью вызова функции, а у меня тут просто передача

Вы вызываете нативный метод sort, у которого первым аргументом может быть функция, которая может влиять на то, как будут отсортированы элементы массива. Функция sort под капотом вызывает эту функцию(так же по ссылке), которую Вы указали в качестве аргумента метода sort и передаёт в неё аргументы.

Таким образом, метод sort берёт текущий и следующий элемент массива и вызывает указанную функцию, в данном случае, compareSold, передавая в неё эти самые элементы.

куда return возвращет colA.sold - colB.sold?

Во внутреннюю реализацию метода sort.

Ссылка по второму и третьему пункту: https://learn.javascript.ru/native-prototypes

P.s. скорее всего, если не бросите, придёте сюда за вопрос ещё ни раз. В таком случае было бы не лишним почитать правила сервиса, в частности подготовки к заданию вопроса и его оформлению.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы