web-dev-qa-db-fra.com

Comment rectifier "Le document a été utilisé avant sa définition" à l'aide de Jslint

J'ai l'erreur suivante dans jsLint :

'document' a été utilisé avant sa définition.

Ligne qui provoque l'erreur:

document.cookie = name + "=" + value + expires + "; path=/";

Je comprends pourquoi cela se produit, mais j'aimerais que mon code soit conforme.

Comment résoudre ça?

Merci.

25
starjava

Endroit

/*jslint browser:true */

au début du corps de votre fonction. Ou, alternativement, vous pouvez utiliser

/*global document: false */

JSLint est destiné à la vérification de tout code javascript, et l'objet global document n'existe pas partout. Vous devez donc indiquer manuellement à JSLint que votre code doit être exécuté dans le navigateur et que la variable globale document est définie. Par exemple, pour le javascript côté serveur, il est prévu que JSLint signale cette erreur.

47
penartur

Sur le site Web de jslint, vous pouvez lire une directive/globale/qui vous permet de définir des variables supposées être déclarées ailleurs.

Voici un exemple (placez-le en haut du fichier):

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

ou, dans le cas de starjava:

/\*global document\*/

Je ne suis pas vraiment sûr si le :true ou le :false est nécessaire, mais il semble que cela soit recommandé d'après ce que j'ai lu sur le site. http://www.jslint.com/lint.html

Assurez-vous que l'instruction globale initiale se trouve sur la même ligne que '/\*', sinon elle se brise.

2
stanton

si vous utilisez noeud pouvez ajouter la ligne suivante

/ * node JSLint: true * /

au début du script http://jslinterrors.com/a-was-used-before-it-was-defined/

0
AURIGADL

Si tout votre code JS est censé être exécuté depuis un navigateur, ajoutez simplement l'indicateur --browser.

jslint --browser my.js
0
Kolyunya

En mode CLI, vous pouvez utiliser le fichier de configuration:
jslint.conf

{
    "predef": [
        "module",
        "require",
        "window",
        "document",
        "jQuery",
        "Backbone",
        "Marionette",
        "Modernizr",
        "_",
        "setTimeout",
        "clearTimeout",
        "setInterval",
        "clearInterval"
    ],
    "evil":false,
    "indent":4,
    "vars":true,
    "passfail":false,
    "plusplus":false
}

Et utilisez jslint avec le paramètre --config jslint.conf

0
Mohamad Rostami