我编写了一个自定义排序例程(sortArray(a, b)
)来对我拥有的数组进行排序。
如果我这样称呼它
a.sort(function (v1, v2) { return sortArray(v1, v2); });
一切正常。
如果我这样称呼它:
a.sort(sortArray(v1, v2));
v1和v2引发错误,因为未定义。
有没有办法利用.sort()方法传递的参数而不创建一个匿名函数来初始接收它们,然后将它们传递给用户定义的函数?
答案 0 :(得分:6)
Array.prototype.sort
需要一个函数引用,但是您尝试调用sortArray
并传递该调用的返回值。您应该只传递对函数的引用:
a.sort(sortArray);
由于sortArray
已经预期有两个参数,它应该正常工作,v1
和v2
将自动传递。