Почему jslint жалуется, когда я выхожу из <символа в RegEx?

Код: var foo = /\</;

Когда я перехожу в jslint.com и вводим это, я получаю:

Problem at line 1 character 12: Unexpected '\'.

Он говорил мне Unexpected escaped character '<' in regular expression., но времена изменились.

Так что мне просто интересно, почему? Если вы попробуете var foo = /\>/;, это не волнует, что сделка с <?

Ответы

Ответ 1

Если у вас есть два простых div, разница ясна:

<div> < </div> <!--Missing right angle bracket, bad markup-->
<div> > </div> <!--No problem, just a greater than text node-->

JSLint не предполагает, что script является автономным файлом или внутри тега script документа HTML. В языках разметки, таких как XUL, MXML, XAML, TVML, LZX, XHTML5 или SVG, содержимое тега script рассматривается как первый div в приведенном выше примере, поэтому левая угловая скобка будет выглядеть как начало тега. В этих языках используйте замену сущности или блок CDATA для обертывания левой угловой скобки и символов амперсанда:

<script> 
if ( -1 &lt; 0 &amp;&amp; true !== false) {} 
</script>

<script>
<![CDATA[
if ( -2 < 0 && true !== false) {}
]]>
</script>

Ссылки