Почему 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 < 0 && true !== false) {}
</script>
<script>
<![CDATA[
if ( -2 < 0 && true !== false) {}
]]>
</script>
Рекомендации