JSLint : 정의되기 전에 사용되었습니다.


95

안녕하세요 저는 3 개의 자바 스크립트 파일이 있습니다.

  • jquery.js
  • utility.js
  • file1.js

file1.js에는

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});

정의되기 전에 'jQuery'가 사용되었습니다. 정의되기 전에 '문서'가 사용되었습니다.

이 경고를 안전하게 제거하려면 어떻게해야합니까?

만약 내가한다면

var document = document || {}; 

그런 다음 내 utility.js에서 사용되는 경우 IE에서는 null이고 firefox에서는 괜찮습니다.

이것에 대한 최선의 해결책은 무엇입니까?


JS Lint의 중복 가능성 : 'shortcut'이 정의되기 전에 사용되었습니다 . 또한 옵션에서 브라우저 가정이 선택되어 있는지 확인하십시오 .
Andy E

@ChunpingWang 귀하가 여전히 활동 중이며이 질문에 허용 된 답변이 없음을 알았습니다. 이 답변 중 하나가 수용 가능하도록 만드는 데 필요한 것이 누락 되었습니까? Quentin의 대답이 질문에 따라 문제를 해결할 것 같습니다. 질문에 답하는 데 필요한 추가 정보가 있습니까?
러핀

답변:


169

에서 문서

JSLint는 또한이 파일에 사용 된 변수가 다른 파일에 정의되었음을 JSLint에 표시 할 수있는 / * global * / 지시문을 인식합니다. 주석에는 쉼표로 구분 된 이름 목록이 포함될 수 있습니다. 각 이름 뒤에는 선택적으로 콜론과 true 또는 false가 올 수 있습니다. true는 변수가이 파일에 할당 될 수 있음을 나타내고 false는 할당이 허용되지 않음을 나타냅니다 (기본값). 지시문은 기능 범위를 존중합니다.

일부 전역은 미리 정의 할 수 있습니다. 브라우저 (브라우저) 가정 옵션을 선택하여 문서 및 addEventListener와 같은 웹 브라우저에서 제공하는 표준 전역 속성을 미리 정의합니다.

예:

/*jslint browser: true*/
/*global $, jQuery*/

25
참고 : 전에 공백을 넣을 수 없습니다 global때문에 /* global var, var2 */일을하지 않습니다. /*global var, var2*/작품
radixhound 2012-07-27

4
복수는 동등하고 잘 작동 : /*globals */또한 변수의 목록을 추가 더 의미
로버트 Koritnik

2
그래서 JSLint에 대한 해결책은 모든 파일에서 누락 된 항목에 대해 불평하며 모든 파일에 한 줄을 추가합니다. 이것은 끔찍한 조언입니다.
Cerin

@Cerin — 아니요, 정의를 찾을 수없는 변수를 사용하는 것에 대해 불평하는 JSLint에 대한 해결책은 변수 이름에 오타를 만드는 것과는 반대로 다른 파일에서 정의했다고 말하는 것입니다. 나중에 프로그램이 중단됩니다).
Quentin

1
@Quentin, 예,이를 해결하려면 모든 단일 파일에서 "jQuery에 대해 설명"해야합니다. 그것은 아무런 이익도 제공하지 않는 무언가를위한 엄청난 양의 작업입니다. JSLint에서 해당 검사를 비활성화하는 것이 좋습니다.
Cerin

30

Quentin이 말했듯이 /*global*/지침이 있습니다.

다음은 예입니다 (파일 상단에 배치).

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.