Non è sempre una buona idea. Dipende da cosa stai facendo. Cosa significano quando dicono che non è necessario dichiarare le variabili "top level"
, è che non ha importanza. Può importare all'interno di una funzione.Prendere in considerazione i seguenti esempi:
varOne = 1; varTwo = 2; varThree = 3; // undeclared
function lameFunc(){
var varOne = 'Something'; // does no affect varOne at the top level
return varOne;
}
Uguale:
var varOne = 1, varTwo = 2, varThree = 3; // declared
function lameFunc(){
var varOne = 'Something'; // does no affect varOne at the top level
return varOne;
}
Certo, è più facile vedere le variabili con la parola chiave var
e dal momento che non ci sono effetti avversi al "top level"
, si raccomanda.
Si noti che quando cambio lameFunc()
si influisce sulla leva superiore var
, in entrambi i casi.
function lameFunc(){
/* varOne is effected at the higher level whether or not `var` is declared
above as in `varOne = 1` or `var varOne = 1` */
varOne = 'Something';
return varOne;
}
Inoltre, se si dichiara una variabile al di fuori della manifestazione come var someInputVal = document.getElementById('someInput').value;
, allora diciamo che si desidera ottenere il valore onclick di un elemento. Vorresti che lovenga dichiarato all'interno dello perché l'input potrebbe essere stato modificato prima di aver fatto clic su Element
. Esso può essere giusto per dichiarare var someInput = document.getElementById('someInput');
al di fuori della funzione che gestisce il vostro evento, se l'elemento non diventa undefined
allora si può accedere simili:
var doc = document, bod = doc.body;
function E(e){
return doc.getElementById(e);
}
var someInput = E('someInput'), someInputVal = someInput.value;
E('clickButton').onclick = function(){
console.log(someInputVal); // will not be what document.getElementById('someInput').value is if it was changed before clicking
var declared = someInput.value;
console.log(declared);
}
Pensate 'loop for' nello stesso ambito, utilizzando il stessa variabile 'i'. Dichiarare "i" prima e riutilizzarlo sembra più corretto o idiomatico. – elclanrs
Se lo si dichiara con var, sarà locale nell'ambito. Se no, sarà globale. Quindi per chiarire che la var è locale, dichiararla esplicitamente all'inizio della funzione – mplungjan
Dichiarare le variabili nella parte superiore della funzione come mezzo per documentare tutte le variabili utilizzate in un posto. Evita anche la confusione derivante da qualcuno che immagina che una variabile abbia un ambito di blocco quando invece non lo è. –