[1]alert()
[1.1]有阻塞作用,不點選確定,後續程式碼無法繼續執行
[1.2]alert()只能輸出string,如果alerttoString()方法
e.g. alert([1,2,3]);//'1,2,3'
[1.3]alert不支援多個參數的寫法,只能輸出第一個值. 1,2,3);//1
[2]console.log()
[2.1]在列印桌上輸出
[2.2]可以列印任何類型的資料
[2.2] 2,3]);//[1,2,3] [2.3]支持多重參數的寫法 e.g. console.log(1,2,3)// 1 2 35% 和consmmconsmmol. log 的結果不同?score = [1,2,3]; sortedScore = []; console.log(score); sortedScore = score.sort(sortNumber) console.log(sortedScore); function sortNumber(a, b) { return b - a; }
[3, 2, 1]
[3, 2, 1]但是改成alert:score = [1,2,3]; sortedScore = []; alert(score); sortedScore = score.sort(sortNumber) alert(sortedScore); function sortNumber(a, b) { return b - a; }
為什麼會這樣?不應該都是:
1, 2, 33, 2, 1
嗎?
經過一番研究發現是chrome實現的問題,對輸出做了不太合適的優化,把console.log的實際執行推遲,相當於“惰性”求值,遇上數組、對象這樣的引用類型就出上面的問題了。
這是一個很有歷史的 BUG,上個月在開發版已經修復了。