다음 JS :
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
수율 :
test.js: line 5, col 3, '$' is not defined.
JSHint를 사용하여 보풀 일 때 0.5.5. 어떤 아이디어?
$
됩니다 정의되지 않은.
다음 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 옵션도 있습니다 .
/*global $:false, jQuery:false */
.
/* global ... */
있습니까? 나는 일반적으로 모든 기능을 가진 스크립트를 내로 가져 오기 main
때문에 하나씩 정의하는 것이 번거 롭다.
할 일은에 설정 "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
},
}
일반적인 "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()
(느린))를 방지합니다."}(window))
예 : "jQuery 및 Highcharts에도 문제가 있음). 파일의 전역을 정의하는 것 외에 다른 방법을 찾지 못했습니다 그런 다음 목적을
browser: true
는 JSHint 에게 브라우저 환경 ( window
이미 정의 된 곳 ) 을 기대 한다고 알려줍니다 .
온라인 JSHint 구현을 사용할 때이 오류를 해결하려면 다음을 수행하십시오 .
아마도 다음을하고 싶을 것입니다.
const $ = window.$
린트 오류가 발생하지 않도록하십시오.
jquery.js
페이지에 추가 했습니까 ?