</script>precisa ser interrompido porque, caso contrário, encerraria o <script></script>bloco anexo muito cedo. Realmente, ele deve ser dividido entre the <e the /, porque um bloco de script deve (de acordo com SGML) terminar com qualquer sequência de fim de tag aberta (ETAGO) (ou seja </) :
Embora os elementos STYLE e SCRIPT usem CDATA para seu modelo de dados, para esses elementos, o CDATA deve ser tratado de maneira diferente pelos agentes do usuário. A marcação e as entidades devem ser tratadas como texto bruto e passadas para o aplicativo como estão. A primeira ocorrência da sequência de caracteres " </" (delimitador aberto da tag final) é tratada como finalização do final do conteúdo do elemento. Em documentos válidos, essa seria a tag final do elemento.
No entanto, na prática, os navegadores apenas finalizam a análise de um bloco de script CDATA em uma </script>marca de fechamento real .
No XHTML não existe um tratamento especial para blocos de script, portanto, qualquer <(ou &) caractere dentro deles deve ser &escaped;semelhante a qualquer outro elemento. No entanto, os navegadores que estão analisando XHTML como HTML da velha escola ficarão confusos. Existem soluções alternativas que envolvem blocos CDATA, mas é mais fácil simplesmente evitar o uso desses caracteres sem escape. Uma maneira melhor de escrever um elemento de script a partir de um script que funcione em qualquer tipo de analisador seria:
<script type="text/javascript">
document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>');
</script>
\/é uma sequência de escape válida para/, então, por que não apenas usá-la em vez dessas sequências literais de escape<? Por exemplodocument.write('<script src=foo.js><\/script>');. Além disso,</script>não é a única sequência de caracteres que pode fechar um<script>elemento. Mais informações aqui: mathiasbynens.be/notes/etago