Nel codice qui sottoPerché x non è definito nell'ambito interno?
var x = 1;
(function() {
console.log(x);
var x = 2;
}());
Perché è che quando console.log (x), x non è definito?
Nel codice qui sottoPerché x non è definito nell'ambito interno?
var x = 1;
(function() {
console.log(x);
var x = 2;
}());
Perché è che quando console.log (x), x non è definito?
sollevamento variabile. Il codice effettivo viene eseguito in questo modo.
var x = 1;
(function() {
var x; // x = undefined
console.log(x);
x = 2;
})();
Modifica: Su consiglio di Lister, un po 'sul sollevamento variabile. Da MDN (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var):.
"dichiarazioni variabili, ovunque si verifichino, vengono elaborati prima dell'esecuzione qualsiasi codice L'ambito di una variabile dichiarata con var è il contesto di esecuzione corrente, che è sia la funzione che contiene o, per le variabili dichiarato al di fuori di qualsiasi funzione, globale. "
Puoi spiegare all'OP quale sia il sollevamento variabile e perché 'var x = 1; funzione any() {console.log (x);} 'funziona? –
So che possono cercarlo altrove, ma sarebbe bello se le risposte fossero autonome. –
@ TBWill4321 Questo codice quando lo faccio. Fornisce undefined! –
A causa del compilatore, anche se si avvia una var al di sotto del codice, il compilatore lo invia in alto, proprio come var x;
, quindi prima avviare come "x" non definita prima di eseguire console.log, ecco perché è una tale buona pratica per iniziare tutti i vars che userete per prima cosa nella funzione, quindi questi errori non accadrà.
@WolfOfWallstreet Quindi vuoi dopo console.log (x); ottenere il numero 2 giusto? –