</script>tiene que separarse porque, de lo contrario, terminaría el <script></script>bloque de cierre demasiado pronto. Realmente debería dividirse entre el <y el /, porque se supone que un bloque de script (de acuerdo con SGML) debe ser terminado por cualquier secuencia de etiqueta final abierta (ETAGO) (es decir </) :
Aunque los elementos STYLE y SCRIPT usan CDATA para su modelo de datos, para estos elementos, los agentes de usuario deben manejar CDATA de manera diferente. El marcado y las entidades deben tratarse como texto sin formato y pasarse a la aplicación tal cual. La primera aparición de la secuencia de caracteres " </" (delimitador abierto de etiqueta final) se trata como terminando el final del contenido del elemento. En documentos válidos, esta sería la etiqueta final para el elemento.
Sin embargo, en la práctica, los navegadores solo terminan de analizar un bloque de script CDATA en una </script>etiqueta de cierre real .
En XHTML no existe un manejo especial para los bloques de script, por lo que cualquier <(o &) carácter dentro de ellos debe ser &escaped;como en cualquier otro elemento. Sin embargo, los navegadores que analizan XHTML como HTML de la vieja escuela se confundirán. Existen soluciones alternativas que involucran bloques CDATA, pero es más fácil simplemente evitar el uso de estos caracteres sin escape. Una mejor manera de escribir un elemento de script desde un script que funcione en cualquier tipo de analizador sería:
<script type="text/javascript">
document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>');
</script>
\/es una secuencia de escape válida para/, entonces, ¿por qué no usar eso en lugar de esos escapes literales de cadena para<? Por ejdocument.write('<script src=foo.js><\/script>');. Además,</script>no es la única secuencia de caracteres que puede cerrar un<script>elemento. Más información aquí: mathiasbynens.be/notes/etago