Les commentaires HTML sont autorisés dans Javascript, pour les navigateurs plus anciens qui ne connaissent pas les balises <script>
.Chrome - Comportement d'analyse du moteur Javascript
Ref: Are HTML comments inside script tags a best practice?
Ainsi, l'analyseur JS permet <!--
au début du script, qui sera ignoré pour l'analyse. Et, -->
doit être préfixé avec //
afin que le moteur JS les ignore également.
Ref W3C: https://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.3.2
Tout en jouant avec cela, je l'ai vu ce comportement bizarre.
<script>
<!--
alert(1);
-->
</script>
Ici, notez que -->
ne commence pas par //
, qui devrait jeter une erreur par le moteur JS Chrome. Mais, le moteur Chrome JS les considère comme des commentaires et ignore l'analyse syntaxique. Pourquoi? (Q1)
Et, un autre comportement:
<script>
alert(1);
-->''>{][}
</script>
Cet extrait exécutera alerte. Ici, notez l'endroit de -->
. Cette séquence spécifique de caractères rend l'analyseur ignore
toutes les autres valeurs incorrectes qui le suivent. Ce que je veux dire, à la place de -->
, utilisez n'importe quel autre caractère/séquence, il va jeter l'erreur.
Alors, que se passe-t-il ici? Comment -->
rend cet extrait de code valide? (Q2)
Remarque: -->
séquence doit être préfixée avec une nouvelle ligne. C'est-à-dire que
<script>
<!--
alert(1); -->''>{][}
</script>
va lancer une erreur. Encore une fois, pourquoi? (Q3)
Ignorez les balises '' si vous collez le code dans la console. –