2011-11-05 1 views
6

コード:var foo = /\</;RegExで<文字をエスケープするとjslintがエラーになるのはなぜですか?

私はjslint.comに行き、それを中に入ると、私が手:

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

は、それは私Unexpected escaped character '<' in regular expression.を伝えるために使用されるが、時代は変わりました。

私はちょうど興味があります、なぜですか? var foo = /\>/;を試しても気にしない場合、<とは何ですか?あなたは2つの単純なdiv要素を持っている場合は

+5

脱出する必要はありません。これらの言語では、左山括弧とアンパサンド文字をラップするエンティティの交換やCDATAブロックを使用そこに "<"文字があります。また、JSLintはCrockfordの無作為な意見をまとめたものに過ぎません。あなたのコードについてあなたに不平を言うバス停でそれを奇妙な男として考えてください。 – Pointy

+0

私はそれをエスケープする必要はないことを知っているので、エラーです。しかし、なぜそのキャラクターが...エスケープするすべての不必要な文字の中から、なぜ '<'なのか? – goatslacker

+0

私は彼の申請にその警告を含めることにした理由があると確信しています。理由が「馬鹿げて混乱している」場合でも – goatslacker

答えて

3

は、違いが明確である:

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

JSLintは、スクリプトは、スタンドアロンファイルまたはHTMLドキュメントのスクリプトタグ内にあることを前提としていません。そのようなXULMXMLXAMLTVMLLZXXHTML5又はSVGなどのマークアップ言語では、スクリプトタグのコンテンツは、上記の例の最初のdivのように扱われているので、左側の角括弧は、タグの開始のようになります。

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

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

参照

関連する問題