Pourquoi utiliser \x3C au lieu de < lors de la génération de code HTML, de JavaScript?

Je vois le code HTML suivant beaucoup utilisé pour charger jQuery à partir d'un réseau de diffusion de contenu, mais de revenir à une copie locale si la CAN n'est pas disponible (par exemple, dans le Modernizr docs):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.1.min.js">\x3C/script>')</script>

Ma question est, pourquoi est le dernier < personnage dans le document.write() déclaration remplacé par la séquence d'échappement \x3C? < est sûr de caractères en JavaScript et est même utilisé plus tôt dans la même chaîne de caractères, alors pourquoi s'en échapper il? Est-il juste pour empêcher les mauvais navigateur implémentations de la pensée l' </script> à l'intérieur de la chaîne est le vrai script balise de fin? Si il y a vraiment tout les navigateurs qui serait un échec sur ce point?

Comme suite à la question, j'ai vu aussi une variante en utilisant unescape() (comme cette réponse) à l'état sauvage d'un couple de fois aussi. Pourquoi est-ce que la version semble toujours remplacer tous la < et > personnages?

  • Serait-ce vrai dans un fichier de script ou de la fonction eval avais bloc?