2009-06-18 4 views
1

문제를 일으키는 축소/압축 된 javascript 파일이 있습니다. 문제는 압축되지 않은 입력 파일에 줄 바꿈이있을 때 문제가되지 않는 일부 누락 된 세미콜론 인 이있는 것입니다. 그러나 파일이 압축되면 줄 바꿈이 제거되어 구문 분석기 오류가 발생합니다. 예를 들어 :자바 스크립트 패킹 문제

//input 
var x = function() { 
    doSomething(); 
} // note: no semicolon 
var y = 'y'; 

//---- 
// output 
var x=function(){doSomething();}var y='y'; 
//     error here:^

이상한 것은 내가 할 때 세미콜론 새로운 라인, 파일 작품 모두 세미콜론을 대체하는 출력 파일에 대체 할 것입니다! AFAIK, 세미콜론 후 줄 바꿈이 아무것도 변경해야합니다 어떤 상황을 생각할 수 없기 때문에 이것은 실수로 오류를 찾기가 어렵게 만들고 있습니다. 이 대체 작업을 수행하는 것이 왜 효과가 있을지에 대한 아이디어가 있습니까?

답변

5

어 ... 시도해 보셨습니까 JSLint?

+4

내 감정을 상하게합니다. – nickf

+2

빌어 먹을 더그 크로크 포드! – ichiban

+0

설명 : JSLint를 통해 압축되지 않은 파일을 실행하고 누락 된 세미콜론을 찾기 위해 오류를 넘어 가서 문제를 해결했습니다. 나는 아직도 세미콜론 이후에 줄 바꿈을 추가 할 때 왜 효과가 있었는지 혼란 스럽다 ... – nickf

3

줄 바꿈이있을 때 암시적인 세미콜론이 있습니다.

+0

네, 알고 있습니다. 파일의 유일한 줄 바꿈은 이제 세미콜론 바로 뒤에 오므로 아무 것도 암시해야하며 작동합니다. – nickf

2

jslint을 사용하여 코드를 확인하십시오. 이 작업을 수행하고 세미콜론과 관련하여 전달하면 제대로 포장해야합니다.

JavaScript에서는 줄 바꿈시 세미콜론이 암시 적으로 추가됩니다. 이로 인해 모호한 상황이 발생할 수 있습니다. 이 블로그 게시물 : http://robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/은 문제를 간결하게 설명하고 예제를 제공합니다.

+0

큰 링크입니다. 그걸 전혀 몰랐어. –

1

JSlint는 좋은 해결책입니다. 또한 일부 코드 편집기는 이러한 종류의 오류를 발견하게됩니다. 올바르게 호출 한 경우 NetBeans는 사용자가 입력 할 때이를 실시간으로 포착합니다. 나는 코모도 (Komodo)와 앱 타나 (Aptana)도 마찬가지라고 생각한다.

+1

IntelliJ IDEA도 그렇게합니다. –