Ho un lungo file JavaScript che supera JSLint ad eccezione degli errori "usato prima che fosse definito".Contendente con JS "usato prima definito" e Titanium Developer
ho usato dichiarazioni di funzione normale, come in ...
function whatever() {do something;}
al contrario di ...
var whatever = function(){do something;};
e coerente con Steve Harrison's reply ad un precedente post ...
Presumendo che dichiariate tutte le vostre funzioni con la parola chiave function, I pensateci diventa una domanda di programmazione . Personalmente, preferisco strutturare le mie funzioni in modo che sembra logico e rende il codice come leggibile il più possibile. Ad esempio, come te, metterei una funzione di inizializzazione a in alto, perché è da lì che inizia tutto il .
... Mi piace vedere le funzioni in un ordine che ha senso per me.
Lo script funziona perfettamente nei diversi browser testati (ad esempio, FireFox, Safari, Safari mobile, Fennec, IE, Chrome, Midori, ecc.).
Ecco il problema: voglio utilizzare lo script all'interno di un'app per iPhone in fase di creazione con Titanium ma il suo compilatore si arresta con errori "used before defined".
Come posso aggirare questo?
Questa potrebbe essere una domanda stupida, ma anche ... Se le funzioni devono essere chiamato in un ordine particolare, come si fa a risolvere la questione di una funzione chiamata bisogno di richiamare alla funzione che originariamente ha chiamato? Per esempio ...
function buildMenu(){
Display a list of five menu items, each of which calls a function to build the associated screen.
}
function screen1() {
Display the screen associated with menu item #1.
}
Se le funzioni devono essere dichiarate in ordine, function screen1
avrebbe bisogno precedere function buildMenu
. Ma cosa succede se, in determinate condizioni, screen1 non può essere compilato e quindi vuole rivisualizzare il menu (cioè, chiamando una funzione tecnicamente non ancora dichiarata)?
Oh sì ... un'altra domanda: ci sono siti Web o programmi che eseguono automaticamente la sequenza delle funzioni anziché richiedere al programmatore di eseguirlo manualmente?
Grazie. Non ho avuto il tempo di controllare la soluzione precedente, quindi darò una possibilità. Grazie ancora. –
Buon punto. Non ho effettivamente testato la mia soluzione. L'ho appena eseguito tramite jslint. – EndangeredMassa
ha funzionato perfettamente sia in JSLint che in titanio. Grazie ancora. B. BTW: per chiunque abbia bisogno di apportare questa modifica a uno script esistente, come ho fatto io, un collegamento facile per creare l'elenco di variabili globali delle funzioni è eseguire lo script tramite JSLint e copiare l'elenco Globale dal basso di i risultati. Non è preciso al 100% ma nella mia situazione, con circa 100 funzioni, avevo solo bisogno di fare una mezza dozzina di regolazioni. –