以下是代码:
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
只是对该函数的引用。