javascriptのalertとconsolie.log()の違い

1256 ワード

[1]alert()
    [1.1]ブロック作用があり、クリックしないと確定し、後続コードは実行できません.
    [1.2]alert()はstringしか出力できません.alertが出力しているものが対象であれば、Stering()を自動的に呼び出します.
        e.g.alert([1,2,3])/'1,2,3'
    [1.3]alertは複数のパラメータの書き方に対応しておらず、最初の値のみを出力します.
        e.g.alert(1,2,3)//1
[2]consolie.log()
    [2.1]プリンタで出力する
    [2.2]任意のタイプのデータを印刷できます.
        e.g.consolie.log([1,2,3])//[1,2,3]
    [2.3]複数のパラメータに対応する書き方
        e.g.consolie.log(1,2,3)/1 2 3
alertとconsolone.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,2,1
どうしてですか?全部ではないはずです.1、2、3、2、1ですか?
研究した結果、chromeが実現した問題で、出力に不適切な最適化を行い、consone.logの実際の実行を遅らせて、「惰性」の価値を求めることに相当して、配列、対象という参照のタイプに出会ったら上の問題が出てきました.
https://bugs.webkit.org/show_bug.cgi?id=35801
これは歴史的なバグです.先月開発版で修復されました.