2011-01-13 11 views
2
var wrapped_string = "shouldn't this\ 
work?" 

JSLint悪いエスケープエラーです。JavaScript Heredoc?エスケープ改行:JSLint Bad Escapement?

JavaScriptでheredocをどうやって行うのですか?私は長いHTML文字列を持っています。

+1

JSLintは、漠然とした推論で任意のルールをたくさん持っています。この場合、複数行の文字列のエラーは一般的で簡単に見逃されることがあります(多くの言語ではエスケープなしで改行が許可されるためです)。 Lintはあなたが\ n "+ [LFはSOのコメントで許可されていません]" "どうしたらいいですか?" – eyelidlessness

答えて

7

なぜこれがエラーとして処理されるのかという理由は、この構文拡張が最近ECMAScript 5th Edition Specificationで標準化されているためです。

広範にサポートされていますが、ECMAScript 3の実装(これは最も広く実装されています)では動作するとは保証されておらず、ただちにSyntaxError例外が発生します。

他の理由がありますが、それは避けることをお勧めします。LineTerminator以外の文字がある場合は、ECMAScript 5実装でもSyntaxErrorになります。

あなたはバックスラッシュの後にスペースがあった場合、コードがエラーを生成し、コードを読み取ることによって、ちょうど見つけることが容易ではないだろうが。

// works: 
var str = "foo\ 
bar"; 

// an space after it, SyntaxError: 
var str = "foo\ 
bar"; 
1

JSLintはあなたの気持ち、他には何が痛いです、それを見てjQueryで試してみてください。

文字列が大量にある場合はエスケープメントが問題ありません。+を使用するよりもきれいだと思います。

0

jslint.ymlでECMA5構文を有効にすることができます。これはすべて改行をエスケープします。

ES5:真真#はECMAScriptの5構文を許可するかどう

関連する問題