我已经编写了一个自定义排序例程(sortArray(a, b))来对我拥有的数组进行排序。

如果我这样称呼它

    a.sort(function (v1, v2) { return sortArray(v1, v2); });


一切正常。

如果我这样称呼它:

    a.sort(sortArray(v1, v2));


v1和v2引发错误,因为未定义。

如果没有创建匿名函数来首先接收它们,然后将其传递给用户定义的函数,是否没有办法利用.sort()方法传递的参数?

最佳答案

Array.prototype.sort需要一个函数引用,但是您正在尝试调用sortArray并传递该调用的返回值。您应该只传递对函数的引用:

a.sort(sortArray);


由于sortArray已经需要两个参数,因此它应该可以正常工作,v1v2将自动传递。

10-08 03:33