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?
sort это нативный метод js, который внутри себя перебирает ваш массив, вызывает вашу функцию, передает в неё аргументы, смотрит на результат который пришёл и делает соответствующие действия с массивом.
Я надеюсь вы когда нибудь сортировали массив полностью вручную и понимаете как это устроено?
как свойство sold попадает в аргументы colA и colB функции
По ссылке. У Вас массив объектов. Объекты передаются по ссылке. Тык. То есть на каждом вызове функции colA и colB это будут объекты из массива, на котором вызван sort.
Насколько я знаю, передать аргументы в функцию можно только с помощью вызова функции, а у меня тут просто передача
Вы вызываете нативный метод sort, у которого первым аргументом может быть функция, которая может влиять на то, как будут отсортированы элементы массива. Функция sort под капотом вызывает эту функцию(так же по ссылке), которую Вы указали в качестве аргумента метода sort и передаёт в неё аргументы.
Таким образом, метод sort берёт текущий и следующий элемент массива и вызывает указанную функцию, в данном случае, compareSold, передавая в неё эти самые элементы.
P.s. скорее всего, если не бросите, придёте сюда за вопрос ещё ни раз. В таком случае было бы не лишним почитать правила сервиса, в частности подготовки к заданию вопроса и его оформлению.