Почему jslint жалуется, когда я экранирую символ <в RegEx?

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

Когда я захожу на http://www.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 не предполагает, что сценарий является отдельным файлом или находится внутри тега сценария HTML-документа. В языках разметки, таких как XUL, MXML, XAML, TVML, LZX, XHTML5 или SVG, содержимое тега сценария обрабатывается как первый div в приведенном выше примере, поэтому левая угловая скобка будет выглядеть как начало тега. На этих языках используйте замену объекта или блок CDATA, чтобы обернуть левую угловую скобку и символы амперсанда:

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

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

Рекомендации

Другие вопросы по тегам