[1]alerte()
[1.1] Cela a un effet bloquant. Si vous ne cliquez pas sur OK, le code suivant ne peut pas continuer à s'exécuter
.[1.2] alert() ne peut produire qu'une chaîne. Si la sortie d'alerte est un objet, la méthode toString() sera automatiquement appelée
par exemple alert([1,2,3]);//'1,2,3'
[1.3] l'alerte ne prend pas en charge l'écriture de plusieurs paramètres et ne peut afficher que la première valeur
par exemple alert(1,2,3);//1
[2]console.log()
[2.1] Sortie sur la station d'impression
[2.2] Peut imprimer tout type de données
par exemple console.log([1,2,3]);//[1,2,3]
[2.3] Prend en charge l'écriture de plusieurs paramètres
par exemple console.log(1,2,3)// 1 2 3
Les résultats de alert et console.log sont différents ?
score = [1,2,3]; sortedScore = []; console.log(score); sortedScore = score.sort(sortNumber) console.log(sortedScore); function sortNumber(a, b) { return b - a; }
Le résultat ci-dessus :
[3, 2, 1]
[3, 2, 1]
Mais changez-le en alerte :
score = [1,2,3]; sortedScore = []; alert(score); sortedScore = score.sort(sortNumber) alert(sortedScore); function sortNumber(a, b) { return b - a; }
Le résultat ci-dessus :
1, 2, 3
3, 2, 1
Pourquoi cela se produit-il ? Tout ne devrait pas être le cas :
1, 2, 3
3, 2, 1
?
Après quelques recherches, il a été constaté qu'il s'agissait d'un problème avec l'implémentation de Chrome. Nous avons effectué des optimisations inappropriées pour la sortie et reporté l'exécution réelle de console.log, ce qui équivaut à une évaluation « paresseuse » lorsque nous rencontrons des types de référence tels que tableaux et objets. Le problème ci-dessus se pose.
https://bugs.webkit.org/show_bug.cgi?id=35801
Il s'agit d'un BUG très historique, qui a été corrigé dans la version de développement le mois dernier.