2012-05-26 10 views
24

ottengo il seguente errore nel JSLint:Come rettificare "Documento è stato utilizzato prima che fosse definita" usando JSLint

'document' was used before it was defined.

linea che causa l'errore:

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

ottengo perché questo succede, ma vorrei che il mio codice fosse conforme.

Come si risolve?

Grazie.

+0

Se si utilizza jsLint in IDE NetBeans, sono disponibili opzioni per supporre che console, browser e nodoJS siano disponibili.Probabilmente altri IDE hanno la stessa opzione. – kap

risposta

46

Luogo

/*jslint browser:true */ 

all'inizio del corpo della funzione. O, in alternativa, è possibile utilizzare

/*global document: false */ 

JSLint è per il controllo di qualsiasi codice javascript, e l'oggetto globale document non esiste ovunque, quindi bisogna dire manualmente JSLint che il codice è destinato ad essere eseguito in browser, e quindi la variabile globale document è definita. Ad esempio, per javascript lato server è previsto che JSLint riporti questo errore.

+0

Grazie penartur .... sta funzionando .. – starjava

+0

puoi mettere la dichiarazione nella parte superiore del tuo file e si applicherà a tutte le funzioni – bobbdelsol

+1

@starjava: Perché questo non è accettato? Ti sei preso la briga di commentare ... –

2

Dal sito Web di jslint, è possibile leggere a/globale/direttiva che consente di impostare le variabili che si presume vengano dichiarate altrove.

Ecco un esempio (mettere questo nella parte superiore del file):

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

o, nel caso di starjava:

/\*global document\*/ 

Non sono realmente sicuro se il :true o :false è necessario, ma sembra che sia raccomandato da ciò che ho letto sul sito. http://www.jslint.com/lint.html

Assicurarsi che l'istruzione globale iniziale sia sulla stessa riga di '/\*' oppure che si interrompa.

0

Se si suppone che tutto il codice tua JS per essere eseguito dal browser quindi solo l'aggiungere il --browser flag.

jslint --browser my.js 
0

In modalità cli è possibile utilizzare file di configurazione:
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 
} 

E utilizzare JSLint con --config jslint.conf parametro.

Problemi correlati