2012-03-08 12 views
91

Ciao, ho i 3 file javascript.JSLint: era usato prima che fosse definito

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

In file1.js ho

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

ottengo un errore 'jQuery' stato usato prima è stato definito. e 'documento' è stato usato prima che fosse definito.

Come eliminare questo avviso in modo sicuro.

Se faccio

var document = document || {}; 

poi nei miei utility.js se viene utilizzato, sarebbe nulla in IE e ok in firefox.

Qual è la soluzione migliore?

+0

possibile duplicato di [JS Lint: 'collegamento' è stato utilizzato prima che fosse definito] (http://stackoverflow.com/questions/8134049/js-lint-shortcut-was-used-before-it-was-defined). Inoltre, assicurati di avere * Assumi browser * selezionato nelle opzioni. –

+0

@ChunpingWang Notato che eri ancora attivo su SO e questa domanda mancava una risposta accettata. A entrambe le risposte manca qualcosa che è necessario per renderle accettabili? Sembra che la risposta di Quentin risolva il problema come richiesto. Qualche informazione aggiuntiva necessaria per rispondere alla tua domanda? – ruffin

risposta

167

Da the documentation

JSLint riconosce anche una/* globale */direttiva che possono indicare al JSLint che le variabili utilizzate in questo file sono state definite in altri file. Il commento può contenere un elenco di nomi separati da virgole. Ogni nome può essere opzionalmente seguito da due punti e vero o falso, vero che indica che la variabile può essere assegnata da questo file e false che indicano che l'assegnazione non è consentita (che è l'impostazione predefinita). La direttiva rispetta lo scopo della funzione.

Alcuni globali possono essere predefiniti per voi. Selezionare l'opzione Assume un browser (browser) per predefinire le proprietà globali standard fornite dai browser Web, come ad esempio documento e addEventListener.

Esempio:

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

nota: non è possibile inserire uno spazio prima di 'global', quindi'/* global var, var2 */'non funziona.'/ * global var, var2 * /' funziona – radixhound

+4

Plural è equivalente e funziona bene: '/ * globals * /' e ha anche più senso quando si aggiunge una lista di variabili –

+2

Quindi la soluzione a JSLint si lamenta di qualcosa che manca a tutti dei tuoi file per aggiungere una riga a tutti i tuoi file ... Questo è un consiglio terribile. – Cerin

29

Come dice Quentin, c'è una direttiva /*global*/.

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

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

Assicurarsi che la dichiarazione globale iniziale è sulla stessa linea come /*, altrimenti si rompe.

Problemi correlati