以下是代码:

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


代码中的value1和value2是什么?为什么当我返回value1-value2时,它以升序返回数组项;为什么为什么当我在函数中返回value2-value1时,它以降序返回数组项?

我想问的另一个问题是,在sort方法中定义了compare函数时,为什么没有任何参数?

最佳答案

对于数组中的每对调用函数compare。因此,在您的情况下,比较将被称为0和1、1和5、5和10、10和15。

参数a代表该对的第一项,而b代表该对的第二项。在您的示例中,比较实际上会被调用4次,每对一次。

在.sort(compare)内部未调用compare的原因是因为它是一个延迟调用-它没有在那里被调用,sort正在调用它。因此,在这种情况下,compare只是对该函数的引用。

10-07 19:04
查看更多