ホームページ >ウェブフロントエンド >jsチュートリアル >javascript_javascriptスキルにおけるalert()とconsole.log()の違い

javascript_javascriptスキルにおけるalert()とconsole.log()の違い

WBOY
WBOYオリジナル
2016-05-16 15:42:471334ブラウズ

[1]alert()

[1.1] [OK] をクリックしないと、後続のコードの実行を続行できなくなります。

[1.2]alert() は文字列のみを出力できます。アラート出力がオブジェクトの場合、toString() メソッドが自動的に呼び出されます。

例:alert([1,2,3]);//'1,2,3'

[1.3] アラートは複数のパラメーターの書き込みをサポートしておらず、最初の値のみを出力できます

例:alert(1,2,3);//1

[2]console.log()

[2.1] プリントステーションでの出力

[2.2] あらゆる種類のデータを印刷できます

例: console.log([1,2,3]);//[1,2,3]

[2.3] 複数パラメータの書き込みをサポート

例: 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]

ただし、アラートに変更します:


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

これは非常に歴史的なバグで、先月の開発バージョンで修正されました。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。