JavaScript命名排序函数

Tho*_*ell 4 javascript sorting anonymous-function

我想知道是否可以将命名函数传递给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
    ...
}
Run Code Online (Sandbox Code Playgroud)

显然,我可以让代码像下面一样工作,但确实如此,但我不想为了可读性和调试而使用匿名函数.

if (iWantToSortAscending) {
    myArray.sort(function (a, b) {
        ...
        sorty worty
        ....
    }
} else {
    ...
Run Code Online (Sandbox Code Playgroud)

ade*_*neo 5

肯定是,但你必须引用该函数,而不是调用它,并且参数是自动传递的

myArray.sort(sortAscending);
Run Code Online (Sandbox Code Playgroud)

无论何时向函数添加括号和参数,都会立即调用它.
当你希望它被另一个函数调用时,例如作为回调函数sort(),你引用它,然后将括号括起来.