我想知道是否可以将命名函数传递给Array.sort()。我正在尝试做类似下面的逻辑的事情,但是显然它抱怨没有定义a
。
if (iWantToSortAscending) {
myArray.sort(sortAscending(a, b));
} else {
myArray.sort(sortDescending(a, b));
}
// my lovely sort functions
function sortAscending(a, b) {
...
sorty worty
...
}
function sortDescending(a, b) {
...
sorty worty differently
...
}
显然,我可以使代码像下面那样工作,而且确实可以,但是为了可读性和调试,我宁愿不使用匿名函数。
if (iWantToSortAscending) {
myArray.sort(function (a, b) {
...
sorty worty
....
}
} else {
...
最佳答案
可以,但是您必须引用该函数而不是调用它,并且参数会自动传递
myArray.sort(sortAscending);
每当在函数中添加括号和参数时,都会立即调用它。
当您希望它被另一个函数调用时,例如,作为
sort()
中的回调,您可以对其进行引用,并保留括号。