Eventuali duplicati:
Difference between using var and not using var in JavaScriptCosa fa "var" in JavaScript? Perché a volte fa parte di un incarico?
var foo = 1;
foo = 1;
Qual è la differenza tra le due linee di cui sopra?
Eventuali duplicati:
Difference between using var and not using var in JavaScriptCosa fa "var" in JavaScript? Perché a volte fa parte di un incarico?
var foo = 1;
foo = 1;
Qual è la differenza tra le due linee di cui sopra?
Fondamentalmente, var
dichiara una variabile e si può anche assegnare ad esso allo stesso tempo.
Senza var
, sta assegnando alla variabile. L'assegnazione assegnerà ad una variabile esistente o creerà una variabile globale di quel nome, quindi assegnerà ad essa.
Al di fuori delle funzioni, ciò significa che non vi è alcuna differenza reale (in principale) se la variabile non esiste già. Entrambi creano la variabile globale foo
in questo caso.
All'interno di una funzione, c'è un'enorme differenza. Il primo crea una variabile locale alla funzione indipendentemente dal fatto che esista o meno altrove.
Il secondo crea una variabile globale se non esiste o semplicemente modifica il valore se esiste.
Per mantenere il codice il più modulare possibile, è necessario sempre utilizzare var
a meno che non si desideri specificamente modificare le variabili globali esistenti. Ciò significa dichiarare tutti i globali al di fuori delle funzioni con var
e dichiarare tutti i locali con var
.
Esiste una differenza anche al di fuori di una funzione. Puoi farlo obj.prop, non puoi fare var obj.prop! –
@Chintan, questo probabilmente dipende dal fatto che 'obj.prop' non può essere in realtà una nuova variabile, piuttosto è una proprietà di una variabile' obj' esistente. – paxdiablo
Nel primo caso, foo sarà disponibile nello stesso ambito in cui è definito, cioè sarà variabile locale. Nel secondo caso, foo è una variabile globale, situata nell'ambito globale.
foo = 1
inserisce foo
nell'ultimo ambito in cui è stato definito foo
o nell'ambito globale. var foo = 1
inserirà la variabile nell'ambito corrente (ovvero la funzione corrente).
Quale tutorial/libro JavaScript stai utilizzando? (Questo è un argomento piuttosto fondamentale ...) –