Frage JSLints Problem mit 'window' als globale Variable


Also ich benutze JSLint versuchen, Fehler zu erkennen. Ich wende einige Optionen ab, die ich nicht mag, aber ich sehe keine Möglichkeit, die Möglichkeit nutzen zu können window Globale Variable. Nun, es gibt die Option Yahoo Widget, aber das ist übertrieben.

Was ist mit der Verwendung von 'Fenster', warum würde JSLint sagen, dass es Fehler verursacht?


75
2017-09-10 08:31


Ursprung


Antworten:


/*jslint browser: true*/

Ist die richtige Lösung dafür.

2017-07-07: JSLint Dokumentation sagt jetzt:

browser... Es liefert kein Selbst oder Fenster; Sie müssen diese Aliase des gefürchteten globalen Objekts selbst anfordern.

und

Das /global/ Direktive kann nur verwendet werden, wenn die Option Browser übernehmen ausgewählt ist.

Sie müssen nun Folgendes verwenden:

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

134
2017-09-12 13:41



Machen Sie einfach einen Kommentar in Ihrem Skript:

/*global window */

... your script goes here

Dieser Kommentar wird JSLint das mitteilen window ist woanders definiert.

Sehen: http://www.JSLint.com/lint.html,

JSLint erkennt auch ein /* global */ Kommentar, der JSLint anzeigen kann, dass in dieser Datei verwendete Variablen in anderen Dateien definiert wurden. Der Kommentar kann eine durch Kommas getrennte Liste von Namen enthalten. Jedem Namen kann optional ein Doppelpunkt folgen und entweder true oder false, true zeigt an, dass die Variable dieser Datei zugewiesen werden kann, und false, das angibt, dass die Zuweisung nicht erlaubt ist, was der Standardwert ist.

Wenn das Fenster standardmäßig global sein soll, ohne den Kommentar auf das Skript anwenden zu müssen, können Sie hinzufügen predef:["window"] auf den Objektliteralparameter innerhalb der JSLINT Funktion Ihres lokalen jslint.js Datei.

BTW, ich benutze predef:["$","window"] jQuery auch global zu haben.

Aktualisieren:

Diese Antwort war im Jahr 2009 korrekt. Ab sofort sollten Sie die Lösung /*jslint browser: true*/ zur Verfügung gestellt von Matt Clarkson.


76
2017-09-10 08:37



JSLint wissen zu lassen, dass Sie es erkennen window Fügen Sie als globales Objekt diese Direktive am Anfang Ihrer Datei hinzu:

/*global window*/

Ich konnte früher benutzen:

/*jslint browser: true */

aber das scheint nicht mehr zu funktionieren. Jetzt, nach dem JSHint Hilfe bezüglich der browser Möglichkeit:

Es liefert nicht self oder window; Sie müssen diese Aliase des gefürchteten globalen Objekts selbst anfordern.

Ich bin mir nicht sicher, wann diese Änderung gemacht wurde, aber es hat mich für eine Weile behindert.


4
2017-11-17 04:54



Ich musste beide obigen Antworten auf diesen Code verwenden, um alle Warnungen loszuwerden:

/*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));

Also für mich ist das die Lösung beim Benutzen des JSLint-Website:

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

3
2017-10-29 15:27



Wenn Sie das nicht in jeder Datei angeben möchten, können Sie es global in Ihrer Datei festlegen eslintrc Konfigurationsdatei wie folgt:

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

1
2017-10-02 11:47