что такое значение1 и значение 2 в функции JavaScript для метода сортировки - PullRequest
2 голосов
/ 30 марта 2011

Следующий код:

 function compare(value1, value2){
      return (value1-value2); 
   };
   var values = [0, 1, 5, 10, 15];
   values.sort(compare);
   alert(values);

что такое значение1 и значение2 в коде? Почему, когда я возвращаю значение1 - значение2, он возвращает элемент массива в порядке возрастания, но почему, когда я возвращаю значение2 - значение1 в функции, он возвращает элемент массива в порядке убывания?

Другой вопрос, который я хотел бы задать, - почему нет аргумента, когда в методе сортировки определена функция сравнения?

1 Ответ

3 голосов
/ 30 марта 2011

Функция сравнения вызывается для каждой пары в массиве.Так что в вашем случае, сравнение будет вызвано для 0 и 1, 1 и 5, 5 и 10, 10 и 15.

Аргументы a представляют первый элемент пары, а b представляет второй элементпара.В вашем примере сравнение фактически будет вызываться 4 раза, по одному разу для каждой пары.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...