[javascript] JSHint 및 jQuery : ‘$’이 (가) 정의되지 않았습니다

다음 JS :

(function() {
  "use strict";

  $("#target").click(function(){
    console.log("clicked");
  });

}());

수율 :

test.js: line 5, col 3, '$' is not defined.

JSHint를 사용하여 보풀 일 때 0.5.5. 어떤 아이디어?



답변

비교적 최신 버전의 JSHint를 사용하는 경우 일반적으로 선호되는 접근 방식은 프로젝트 루트에 .jshintrc 파일을 작성하고이 구성을 파일에 저장하는 것입니다.

{
    "globals": {
        "$": false
    }
}

이는 $가 전역 변수임을 JSHint에 선언하고 false는 대체하지 않아야 함을 나타냅니다.

.jshintrc 파일은 실제 JSHint 이전 버전 (예 : 2012 년의 원래 질문과 같은 v0.5.5)에서는 지원되지 않았습니다. .jshintrc 파일을 사용할 수 없거나 사용하지 않으려면 스크립트 파일 맨 위에이를 추가 할 수 있습니다.

/*globals $:false */

JSHint 옵션 페이지 에서 볼 수 있듯이 속기 “jquery”jshint 옵션도 있습니다 .


답변

.jshintrc에 두 줄을 추가 할 수도 있습니다

  "globals": {
    "$": false,
    "jQuery": false
  }

이것은 jshint에게 두 개의 전역 변수가 있음을 알려줍니다.


답변

할 일은에 설정 "jquery": true되어 있습니다 .jshintrc.

JSHint 옵션 참조 :

jquery

이 옵션은 jQuery JavaScript 라이브러리에 의해 노출되는 글로벌을 정의합니다.


답변

다음은 .jshintrc에 넣을 행복한 작은 목록
입니다. 시간이 지나면이 목록에 추가 할 것입니다.

{
  // other settings...
  // ENVIRONMENTS
  // "browser": true, // Is in most configs by default
  "node": true,
  // others (e.g. yui, mootools, rhino, worker, etc.)
  "globals": {
    "$":false,
    "jquery":false,
    "angular":false
    // other explicit global names to exclude
  },
}


답변

WebStorm, PyCharm, RubyMine 또는 IntelliJ IDEA와 같은 IntelliJ 편집기를 사용하는 경우 :

파일 / 설정 / 자바 스크립트 / 코드 품질 도구 / JSHint의 환경 섹션에서 jQuery 체크 박스를 클릭하십시오.


답변

일반적인 “JSHint 전역 끄기”를 권장하는 대신 모듈 패턴 을 사용하여이 문제를 해결 하는 것이 좋습니다 . 그것은 코드를 “포함”하고 유지 성능을 향상시킵니다 (Paul Irish의 “Jquery에 대해 배운 10 가지 사항” 기반 ).

나는 다음과 같이 모듈 패턴을 작성하는 경향이 있습니다.

(function (window) {
    // Handle dependencies
    var angular = window.angular,
        $ = window.$,
        document = window.document;

    // Your application's code
}(window))

다음과 같은 다른 성능 이점을 얻을 수 있습니다 (자세한 내용은 여기 참조 ).

  • 코드를 축소하면 전달 된 window객체 선언도 축소됩니다. 예를 들면 window.alert()된다 m.alert().
  • 자체 실행 익명 함수 내부의 코드는 window개체의 인스턴스 하나만 사용 합니다.
  • window속성이나 메서드를 호출 할 때 추적을 삭감 하여 범위 체인의 값 비싼 통과 window.alert()( 예 : (빠른) 대 alert()(느린))를 방지합니다.
  • “네임 스페이스”와 격리 (글로벌은 사악함)를 통한 기능의 로컬 범위. 이 코드를 별도의 스크립트로 분할해야하는 경우 해당 스크립트 각각에 대한 하위 모듈을 만들어 하나의 기본 모듈로 가져올 수 있습니다.

답변

IntelliJ 편집기를 사용하는 경우

  • 환경 설정 / 설정
    • 자바 스크립트
      • 코드 품질 도구
        • JSHint
          • 사전 정의 (아래)에서 설정을 클릭 하십시오.

예를 들어 어떤 것을 입력해도 console:false목록 (.jshintrc)뿐만 아니라 전역에 추가 할 수 있습니다.