Programing

전역 변수로 '창'이있는 JSLint의 문제

crosscheck 2020. 10. 18. 08:25
반응형

전역 변수로 '창'이있는 JSLint의 문제


그래서 JSLint사용하여 오류를 감지하고 있습니다. 마음에 들지 않는 일부 옵션을 해제했지만 window전역 변수 를 사용할 수있는 방법이 보이지 않습니다 . 음, Yahoo 위젯 옵션이 있지만 그것은 과잉입니다.

'창'사용에 대한 거래는 무엇입니까? JSLint가 오류를 일으키는 이유는 무엇입니까?


/*jslint browser: true*/

이것에 대한 올바른 해결책이었습니다. 2017-07-07부터는 전역 지시문을 수동으로 설정해야합니다. 로부터 JSLint 문서 :

/ * global * / 지시문은이 파일에 사용할 수있는 전역 집합 (일반적으로 함수 및 함수를 포함하는 개체)을 지정하는 데 사용됩니다. 이것은 ES6 모듈이 나타나기 전에 소스 파일을 함께 연결하기 위해 브라우저에서 일반적으로 사용되었습니다. 전역 변수의 사용은 강력히 권장하지 않지만 불행히도 웹 브라우저에서는이를 사용해야합니다. / * global * / 지시문은 브라우저 가정 옵션이 선택된 경우에만 사용할 수 있습니다.

따라서 다음을 사용해야합니다.

/*jslint browser */
/*global window */

다음과 같이 스크립트에 주석을 추가하십시오.

/*global window */

... your script goes here

이 주석은 window다른 곳에서 정의 된 JSLint를 알려줍니다 .

참조 : http://www.JSLint.com/lint.html ,

JSLint는 또한 /* global */이 파일에 사용 된 변수가 다른 파일에 정의되어 있음을 JSLint에 나타낼 수 있는 주석을 인식 합니다. 주석에는 쉼표로 구분 된 이름 목록이 포함될 수 있습니다. 각 이름 뒤에는 선택적으로 콜론이 올 수 있으며 true 또는 false, true는 변수가이 파일에 할당 될 수 있음을 나타내며 false는 할당이 허용되지 않음을 나타내며 기본값입니다.

스크립트에 주석을 적용 할 필요없이 기본적으로 창을 전역으로 만들 려면 로컬 파일 predef:["window"]JSLINT함수 내에서 개체 리터럴 매개 변수에 추가 할 수 있습니다 jslint.js.

BTW, 나는 predef:["$","window"]jQuery를 전역으로 사용 하고 있습니다.

최신 정보:

이 답변은 2009 년에 정확했습니다. 현재로서는 /*jslint browser: true*/Matt Clarkson이 제공 한 솔루션을 사용해야합니다 .


JSLint에게 window전역 객체로 인식 하고 있음을 알리 려면 파일 맨 위에 다음 지시문을 추가하십시오.

/*global window*/

나는 다음을 사용할 수 있었다.

/*jslint browser: true */

그러나 이것은 더 이상 작동하지 않는 것 같습니다. 이제 옵션 에 관한 JSHint 도움말 에 따르면 browser:

self또는 제공하지 않습니다 window. 두려운 전역 개체의 별칭을 직접 요청해야합니다.

언제 그 변화가 있었는지 잘 모르겠지만 한동안 저를 괴롭 혔습니다.


모든 경고를 제거하려면이 코드에서 위의 두 답변을 모두 사용해야했습니다.

/*jslint browser:true*/
/*global window*/
// eventBoiler v0.1.1 by @ryanpcmcquen
// https://github.com/ryanpcmcquen/eventBoiler
(function (win, doc) {
    'use strict';
    win.eventBoiler = function (selector, typeOfEvent, func) {
        doc.querySelector(selector).addEventListener(typeOfEvent, func);
    };
    win.eventBoiler.all = function (selectors, typeOfEvent, func) {
        Array.prototype.slice.call(doc.querySelectorAll(selectors)).map(function (i) {
            i.addEventListener(typeOfEvent, func);
        });
    };
}(window, document));

그래서 저에게 이것은 JSLint 웹 사이트를 사용할 때의 해결책입니다 .

/*jslint browser:true*/
/*global window*/

모든 파일에서 이것을 지정하지 않으려면 다음과 같이 eslintrc 구성 파일 에서 전역 적으로 설정할 수 있습니다 .

"globals": {
    "window": true,
}

참고URL : https://stackoverflow.com/questions/1404078/jslints-issue-with-window-as-a-global-variable

반응형