2012-05-09 6 views
35

줄 연속에 대한 가장 좋은 방법은 입니다.? 문자열에 \을 사용할 수 있다는 것을 알고 있습니다. 하지만 다음 코드를 어떻게 분리합니까? I가 잘 이해하는 경우JavaScript의 줄 연속 문자

var statement = con.createStatement("select * from t where 
(t.a1 = 0 and t.a2 >=-1) 
order by a3 desc limit 1"); 

답변

46

: unless you're using Ecmascript 2015 어쨌든 을 \ 함께 여러 스트링을 분할 피하기 때문에 가독성 들어

var statement = con.createStatement('select * from t where ' 
            + '(t.a1 = 0 and t.a2 >=-1) ' 
            + 'order by a3 desc limit 1'); 

을 각 행에 + 연산자를 정렬 괜찮 :

  1. whitespa 자바 스크립트
  2. 되지 표준입니다 구문 분석 오류를 생성 할 수있는 문자 다음에 CE
+0

나는 어리석은 실수를 저질렀다. 문자열 사이에 공백을 쓰는 것을 잊기 쉽습니다. 문자열 사이의 공백 (올바른지)을 알고 있어야합니다. 공백이 없으면 SQL 문이 작동하지 않습니다. – xralf

+1

'''\'''이 표준 자바 스크립트가 아닌 이유를 설명해 주시겠습니까? 마찬가지로, ecmascript 스펙에 언급되지 않았거나, 눈살을 찌푸 리거나 그렇지 않으면 표준이 아닌가? –

+3

그런데 "select *"는 특히 동적 SQL 문자열에서 쿼리를 생성 할 때 좋지 않은 방법입니다. 이것은 보안상의 악몽이 될 수 있습니다. 명시 적으로 열을 지정하고 데이터베이스 프로 시저 호출 또는 테이블 반환 함수 호출을 사용하여 SQL 주입 문제를 줄이는 것이 더 나은 방법입니다. SQL Server에서 동적 SQL은 항상 sp_executesql을 사용해야합니다. – devinbost

22

나는, 자바 스크립트 행 계속을 위해 백 슬래시를 사용하여과 같이 좋아한다 :의 "+"

// validation 
    $(".adjustment, .info input, .includesAndTiming input, \ 
     .independentAdj, .generalAdj, .executiveAdj \ 
     #officeExpense, #longDistanceExpense, #digitalImages, #milesReimbursment, #driveTime, #statementTranscription").keypress(function (event) { 
+1

백 슬래시 사용시 문제는 확장 도구를 적용한 후 코드가 작동하지 않을 수 있다는 점입니다. –

+3

이 문제를 지원할만한 사례가 있습니까? http://jscompress.com/을 (를) 실행하면 정상적으로 작동하는 것 같습니다. – user1477388

1

문자열의 연결을위한 것이며 대부분의 예제가 다루고있는 문자열로. 복합 "if"문과 같이 여러 줄에 문자열을 써야하는 명령이 있다면 어떻게합니까? 계속 될 각 행의 끝에 역 슬래시가 필요합니다. 이렇게하면 보이지 않는 다음 줄 문자가 이스케이프되어 중간 명령문에서 명령의 경계를 정하지 않습니다.

+0

아니요, 표현식이나 문장을 계속 사용할 필요가 없습니다. 문자열이나 정규 표현식 만 필요할 수 있습니다. – doug65536

+0

[Proof] (https://jsfiddle.net/6q1ygsjs/) – doug65536

3

내 개인적인 취향이 첫 번째 응답과 유사하지만, 내 눈에 대한 가독성은 쉽게 :

var statement = con.createStatement 
    (
    'select * from t where ' + 
    '(t.a1 = 0 and t.a2 >=-1) ' + 
    'order by a3 desc limit 1' 
    ); 

그것은 거의 20 년 동안 내가 사용했던 SQL 구문 형식으로 유사성을 친다 :

SELECT * 
FROM t 
WHERE 
    t.a1 = 0 AND 
    t.a2 >=-1 
ORDER BY a3 DESC 
LIMIT 1 

(가) 오른쪽 lvalues에게 & 구에 의하면, 좌측 가장자리 아래에서 균등하게 슬라이딩 눈 허용에 연속 (SQL에서 자바 스크립트 또는 +AND)을 유지. 왼쪽에서 계속하기가 약간 더 어렵습니다.이 재료를 많이하지 않는 한 중요하지 않습니다. 사용하는 모든 칼로리는 형식이 약간 개선되어 저장 될 수있는 칼로리입니다.

이 쿼리는 너무 간단하므로 SQL 형식으로 모두 분리하면 공간과 대역폭이 낭비되기 때문에 제안 된 JavaScript는 열 대신에 여섯 줄로 표시됩니다. 중괄호를 한 줄 위로 접을 때마다 줄이 네 줄로 나뉘어 공백이 생깁니다. 꽤 명확하거나 편집하기가 쉽지는 않습니다.