2013-10-31 56 views
-2

嗨我是用排序排序數組,並不知道爲什麼/如何/ JavaScript執行代碼的順序。JavaScript執行順序的說明

代碼如下

arr = ["cc", "aa", "dd", "bb"]; 

console.log(arr); 

fun = function() { 
    var re = arr; 
    console.log(re); 

    re = re.sort(); 
    console.log(re); 
}; 


fun(); 

我知道sort()方法改變了原來的數組對象,但爲什麼當我那種方法之前CONSOLE.LOG我不能得到陣列的原始順序?

有人能解釋JavaScript的執行順序嗎?我認爲它是從上到下執行的。

謝謝。

更新:的jsfiddle下面

http://jsfiddle.net/BPNWC/

+0

當我複製/粘貼以上代碼到Chrome控制檯,我會得到您期待的輸出(原始數組順序)。 [「cc」,「aa」,「dd」,「bb」] [「cc」,「aa」,「dd」,「bb」] [「aa」,「bb」,「cc」 「dd」] – Scottie

+0

我在JSfiddle測試,我得到如上所述,因此我原來的問題在這裏看到。 http://jsfiddle.net/BPNWC/ – user1831677

回答

2

你的第一個console.log打印出["cc", "aa", "dd", "bb"]

你的第二個console.log打印出["cc", "aa", "dd", "bb"] 因爲什麼都沒有改變

你的第三個console.log打印出[ 'aa', 'bb', 'cc', 'dd' ] 因爲sort();將按字母順序「排序」數組。

+0

是的,這也是我期待看到的,但我無法解釋爲什麼它不在這裏發生。 http://jsfiddle.net/BPNWC/ – user1831677

+0

我改變了你的小提琴[這裏](http://jsfiddle.net/aaldim/BPNWC/1/),因爲JSfiddle沒有控制檯(或者我找不到它)。所以我改變了所有的console.log();提醒(); – aaldim

+0

是的,它有一個控制檯,檢查我的小提琴。打開螢火蟲。謝謝。 – user1831677

0

如果要檢查「Array.join」方法的中介執行的步驟,你可以通過比較器和檢查值也臨危:

arr.sort(function(a, b) { 
    console.log([a, b], arr);    // log both parameters and the array 
    return (a==b ? 0 : (a < b ? -1 : 1)); // return re comparison result 
});