문제

JSLINT를 사용하여 대부분의 외부 JavaScript 파일을 확인하지만 가장 큰 오류는 정의되기 전에 사용되는 기능에서 비롯됩니다.

이것이 제가 걱정해야 할 문제입니까??

Firefox, IE7 및 Chrome은 신경 쓰지 않는 것 같습니다. 인기와 같은 기능 init() (내가 자주 사용하는) 일반적으로 나에게 의미가있는 상단에 붙어 있습니다 (나는 그것이 유사하다고 생각하는 것을 좋아합니다. main()JSLINT에 따르면)는 파일의 맨 아래로 밀어야합니다.

도움이 되었습니까?

해결책

당신이 그것을 사용하여 함수를 선언하는 경우 function 키워드, 선언되기 전에 사용할 수 있습니다. 그러나 다른 방법을 통해 함수를 선언하는 경우 (예 : 함수 표현식 또는 Function 생성자), 기능을 사용하기 전에 선언해야합니다. 보다 이 페이지 자세한 내용은 Mozilla Developer Network에서.

당신이 당신의 모든 기능을 function 키워드, 나는 그것이 프로그래밍 스타일의 질문이된다고 생각합니다. 개인적으로, 나는 논리적으로 보이는 방식으로 내 기능을 구성하는 것을 선호하며 코드를 최대한 읽을 수있게합니다. 예를 들어, 당신처럼, 나는 넣을 것입니다 init 모든 것이 시작되는 곳이기 때문에 상단에서 작동합니다.

다른 팁

이것은 최고 등급의 Google 히트이며 다른 사람들이 JSLINT 도구에서 처음에는 보지 못할 수도 있으므로 이러한 유형의 오류를 숨길 수있는 "오도 된 정의를 견딜 수있는"옵션이 있습니다.

/*jslint latedef:false*/

JSHINT를 사용하는 경우 설정할 수 있습니다 latedef 에게 nofunc, 후기 기능 정의 만 무시합니다.

문서 - http://www.jshint.com/docs/options/#latedef

예제 사용 :

/* jshint latedef:nofunc */

noop();

function noop() {}

도움이 되었기를 바랍니다.

JSLINT의 웹 사이트에서 (http://www.jslint.com/lint.html), 다른 곳에서 선언 된 것으로 가정 된 변수를 설정할 수있는 /*global* / directive에 대해 읽을 수 있습니다.

다음은 예입니다 (파일 상단에 이것을 넣으십시오).

/*global var1,var2,var3,var4,var5*/

The : True : False는 실제로 내 경험에 필요하지 않지만 사이트에서 읽은 내용에서 권장되는 것처럼 보입니다.

초기 글로벌 명세서가 같은 줄에 있는지 확인하십시오. /*, 그렇지 않으면 부서집니다.

이 경고를 비활성화합니다 jshint 모든 파일의 경우 이것을 귀하의에 배치하십시오 .jshintrc 파일:

{
   "latedef": false
}

당신의 .jshintrc 파일, 세트 :

  "latedef": "nofunc",

LateEf 옵션이 제거 된 것은 매우 불행한 일입니다. 이것은 상단에 인터페이스가있는 '클래스'를 만들려고 할 때 필수적입니다.

function SomeClass() {
   var self = this;
   self.func = func;

   function func {
      ...
   }
}

이 스타일은 매우 일반적이지만 func가 정의되기 전에 '사용'되기 때문에 JSLINT를 통과하지 않습니다. 각 '멤버'기능마다 글로벌을 사용해야하는 것은 총 통증입니다.

항상 상단에서 문제가되는 기능을 선언 할 수 있습니다.

EG : var init;

.... 그러나 그러면 진정한 정의에 도달하면 "var"를 제거해야합니다.

init = function () {};

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top