[英]JavaScript named sort 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
...
}
顯然,我可以讓代碼像下面一樣工作,但確實如此,但我不想為了可讀性和調試而使用匿名函數。
if (iWantToSortAscending) {
myArray.sort(function (a, b) {
...
sorty worty
....
}
} else {
...
肯定是,但你必須引用該函數,而不是調用它,並且參數是自動傳遞的
myArray.sort(sortAscending);
無論何時向函數添加括號和參數,都會立即調用它。
當你希望它被另一個函數調用時,例如作為sort()
的回調,你引用它,並保留括號。
想想“我的節目在做什么?”
myArray.sort(sortAscending(a, b));
它有什么作用? 它嘗試使用表達式sortAscending(a,b)
結果調用myArray.sort
。 首先, a
和b
未定義,因此拋出( ReferenceError
)。 但是如果a
和b
被定義怎么辦? 表達式sortAscending(a,b)
結果不是函數。
為了使事情有效,你必須使用代碼myArray.sort(sortAscending);
- 它傳遞函數作為參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.