当我逃离<时,为什么jslint会抱怨RegEx中的角色?

时间:2011-11-05 09:11:37

标签: javascript jslint

代码:var foo = /\</;

当我转到jslint.com然后输入时,我得到:

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

以前告诉我Unexpected escaped character '<' in regular expression.,但时间已经改变。

所以我只是好奇,为什么?如果您尝试var foo = /\>/;它不关心,与<有什么关系?

1 个答案:

答案 0 :(得分:3)

如果您有两个简单的div,区别很明显:

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

JSLint不假定脚本是独立文件或HTML文档的脚本标记内。在标记语言中,例如XULMXMLXAMLTVMLLZXXHTML5SVG,脚本标记内容被视为上例中的第一个div,因此左尖括号看起来像标记的开头。在这些语言中,使用实体替换或CDATA块来包装左尖括号和&符号:

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

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

<强>参考