簡體   English   中英

有人可以解釋這些JS函數之間的區別嗎?一個帶有回調,另一個沒有帶有回調

[英]Can someone explain the difference between these JS functions one with callback and other no with callback

我們可以對數組進行排序:

1。

var values = [0,3,2,5,7,4,8];
console.log(values.sort());

2。

var values = [0,3,2,5,7,4,8];
values.sort(function(v1,v2){
    return v1-v2;
});
console.log(values);

兩者都提供相同的輸出,但是哪個更快或更佳?

除非數組中的所有數字都具有相同的位數,否則它們不是等效的。 默認的sort()比較函數將數組元素作為字符串而不是數字進行比較,並且字符串"10"小於"2" 如果將2位數字添加到數組中,則可以看到差異。

 var values = [0,3,2,5,7,4,8, 10]; console.log(JSON.stringify(values.sort())); console.log(JSON.stringify(values.sort(function(v1,v2){ return v1-v2; }))); 

比較它們的性能似乎毫無意義,因為它們做的是不同的事情,並且第一種形式很可能是錯誤的。

因此,第一個.sort()調用使用默認的比較器,可以在本文檔中找到該默認的比較器。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

“如果未提供compareFunction,則通過將元素轉換為字符串並按Unicode代碼點順序比較字符串來對元素進行排序。”

第二種使用您的自定義比較器,它執行整數比較而不是字符串比較。

第二個應該更快,因為它不需要在比較之上進行字符串轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM