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

JSLint은 잘못된 이스케이프 오류를 나타냅니다.자바 스크립트 Heredoc? 이스케이프 뉴 라인 : JSLint 나쁜 탈주?

어떻게하면 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 구문이 허용되어야하는지