code

JSLint : 정의 된 오류 전에 함수 사용

codestyles 2020. 10. 28. 08:05
반응형

JSLint : 정의 된 오류 전에 함수 사용


JSLint를 사용하여 대부분의 외부 Javascript 파일을 확인하고 있지만 가장 큰 오류는 정의되기 전에 사용중인 함수에서 발생합니다.

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

Firefox, IE7 및 Chrome은 상관하지 않는 것 같습니다. JSLint에 따르면 인기있는 init()(자주 사용하는) 기능은 일반적으로 상단에 고정 main()되어 있습니다.


function키워드를 사용하여 함수를 선언하면 선언 되기 전에 사용할 수 있습니다. 그러나 다른 메서드 (예 : 함수 식 또는 Function생성자 사용)를 통해 함수를 선언하는 경우 함수를 사용하기 전에 선언해야합니다. 자세한 내용 은 Mozilla 개발자 네트워크 의이 페이지 를 참조하십시오.

function키워드로 모든 함수를 선언한다고 가정하면 프로그래밍 스타일의 질문이된다고 생각합니다. 개인적으로 저는 논리적으로 보이고 코드를 가능한 한 읽기 쉽게 만드는 방식으로 함수를 구조화하는 것을 선호합니다. 예를 들어, 당신처럼 init모든 것이 시작되는 곳이기 때문에 함수를 맨 위에 놓았습니다 .


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

/*jslint latedef:false*/

jshint를 사용하는 경우으로 설정할 latedefnofunc있으며, 이는 후기 함수 정의 만 무시합니다.

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

사용 예 :

/* jshint latedef:nofunc */

noop();

function noop() {}

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


jslint 웹 사이트 ( http://www.jslint.com/lint.html )에서 다른 곳에서 선언 된 것으로 간주되는 변수를 설정할 수있는 / * global * / 지시문에 대해 읽을 수 있습니다.

다음은 예입니다 (파일 맨 위에 놓기).

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

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

초기 전역 문이와 같은 줄에 있는지 확인하십시오 /*. 그렇지 않으면 중단됩니다.


jshint모든 파일 에 대해이 경고를 비활성화하려면 다음을 파일에 배치 .jshintrc하십시오.

{
   "latedef": false
}

당신의에서 .jshintrc파일, 설정 :

  "latedef": "nofunc",

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

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

   function func {
      ...
   }
}

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


항상 상단에 문제가되는 함수를 선언 할 수 있습니다.

예 : var init;

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

init = function () {};

참고 URL : https://stackoverflow.com/questions/806163/jslint-using-a-function-before-its-defined-error

반응형