2011-11-05 60 views
6

代碼:var foo = /\</;爲什麼jslint在RegEx中跳過<字符時抱怨?

當我去jslint.com和輸入,我得到:

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

它曾經告訴我Unexpected escaped character '<' in regular expression.但時代已經改變了。

所以我只是好奇,爲什麼?如果您嘗試var foo = /\>/;它不在意,<的交易是什麼?

+5

沒有必要逃避「<」字符在那裏。 JSLint也是Crockford隨機意見的編纂。在公共汽車站把它想象成一個奇怪的傢伙,向你抱怨你的代碼。 – Pointy

+0

我知道沒有必要逃避它,因此錯誤。但是爲什麼那個角色呢特別是......所有不必要的角色都逃脫了,爲什麼'<'。 – goatslacker

+0

我確信他有決定將這個警告列入他的申請。即使原因是「這是愚蠢和混亂。」 – goatslacker

回答

3

如果你有兩個簡單的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,XHTML5SVG的標記語言中,腳本標記內容被視爲與上例中的第一個div類似,因此左尖括號將看起來像標記的開始。在這些語言中,使用實體更換或CDATA塊包住左尖括號和連字符的字符:

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

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

參考

相關問題