La vraie réponse est: Parce que vous ne pouvez faire confiance à reporter.
Dans le concept, reporter et asynchrone se distinguent comme suit:
asynchrone permet le script pour être téléchargé en arrière-plan sans blocage. Puis, le moment de la fin de son téléchargement, le rendu est bloqué et que le script s'exécute. Rendre reprend lorsque le script est exécuté.
reporter à fait la même chose, sauf qu'il garantit que les scripts s'exécutent dans l'ordre qu'ils ont été spécifiés sur la page. Ainsi, certains de ces scripts peut terminer le téléchargement, puis s'asseoir et d'attendre pour les scripts téléchargés plus tard, mais qui est apparu devant eux.
Malheureusement, en raison de ce qui est vraiment un combat de chat, de reporter à la définition varie spec spec, et même dans les plus récentes spécifications n'offre pas utile de garantie - qui est, paraît-il garantir à tous les scripts s'exécutent dans l'ordre d'apparition, mais parce qu'il interdit son utilisation dans les scripts inline, cette garantie est perdue.
Que de réponses ici de démontrer, mettre en œuvre les navigateurs reporter différente, de sorte que vous avez à traiter comme si elle a les mêmes garanties que asynchrone: Il peut télécharger en arrière-plan si le navigateur prend en charge, et il l'exécute... éventuellement. Pas de promesses sur la séquence.
Heureusement, la spécification ne fait au moins préciser que async remplace reporter. Vous pouvez donc traiter tous les scripts que async et obtenir une large bande de support de navigateur comme ceci:
<script defer async src="..."></script>
98% des navigateurs utilisés dans le monde entier et 99% aux états-unis (Opéra être damnés) permet d'éviter le blocage avec cette approche.