首頁 > web前端 > js教程 > 主體

javascript中alert()與console.log()的差異_javascript技巧

WBOY
發布: 2016-05-16 15:42:47
原創
1259 人瀏覽過

[1]alert()

    [1.1]有阻塞作用,不點選確定,後續程式碼無法繼續執行

    [1.2]alert()只能輸出string,如果alert輸出的是物件會自動呼叫toString()方法

        e.g. alert([1,2,3]);//'1,2,3'

    [1.3]alert不支援多個參數的寫法,只能輸出第一個值

        e.g. alert(1,2,3);//1

[2]console.log()

    [2.1]在列印台輸出

    [2.2]可以列印任何類型的資料

        e.g. console.log([1,2,3]);//[1,2,3]

    [2.3]支援多個參數的寫法

        e.g. console.log(1,2,3)// 1 2 3

alert 和 console.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, 3
3, 2, 1

為什麼會這樣?不應該都是:
1, 2, 3
3, 2, 1
嗎?

經過一番研究發現是chrome實現的問題,對輸出做了不太合適的優化,把console.log的實際執行推遲,相當於「惰性」求值,遇上數組、對象這樣的引用類型就出上面的問題了。

https://bugs.webkit.org/show_bug.cgi?id=35801

這是一個很有歷史的 BUG,上個月在開發版已經修復了。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!