[1]alert()
[1.1] Es hat eine blockierende Wirkung, wenn Sie nicht auf OK klicken, kann nachfolgender Code nicht weiter ausgeführt werden
[1.2] alarm() kann nur einen String ausgeben. Wenn die Alarmausgabe ein Objekt ist, wird die toString()-Methode automatisch aufgerufen
z. B. warning([1,2,3]);//'1,2,3'
[1.3] Warnung unterstützt nicht das Schreiben mehrerer Parameter und kann nur den ersten Wert ausgeben
z. B. warning(1,2,3);//1
[2]console.log()
[2.1] Ausgabe auf der Druckstation
[2.2] Kann jede Art von Daten drucken
z. B. console.log([1,2,3]);//[1,2,3]
[2.3] Unterstützt das Schreiben mehrerer Parameter
z. B. console.log(1,2,3)// 1 2 3
Die Ergebnisse von Alert und console.log sind unterschiedlich?
score = [1,2,3]; sortedScore = []; console.log(score); sortedScore = score.sort(sortNumber) console.log(sortedScore); function sortNumber(a, b) { return b - a; }
Die obige Ausgabe:
[3, 2, 1]
[3, 2, 1]
Aber ändern Sie es in Warnung:
score = [1,2,3]; sortedScore = []; alert(score); sortedScore = score.sort(sortNumber) alert(sortedScore); function sortNumber(a, b) { return b - a; }
Die obige Ausgabe:
1, 2, 3
3, 2, 1
Warum passiert das? Es sollte nicht alles sein:
1, 2, 3
3, 2, 1
?
Nach einigen Recherchen wurde festgestellt, dass es sich um ein Problem mit der Chrome-Implementierung handelte. Wir haben unangemessene Optimierungen für die Ausgabe vorgenommen und die tatsächliche Ausführung von console.log verschoben, was einer „verzögerten“ Auswertung entspricht, wenn auf Referenztypen wie z. B. gestoßen wird Arrays und Objekte treten auf.
https://bugs.webkit.org/show_bug.cgi?id=35801
Dies ist ein sehr historischer Fehler, der letzten Monat in der Entwicklungsversion behoben wurde.