Non sono riuscito a trovare una corrispondenza esatta sul mio problema, sebbene esistano molte domande relative all'ambito del javascript. Ecco il mio codice attuale per la domanda.Confusione scoping Javascript
var my_var = "blank";
var MyFunc = function() {
my_var = "one";
//var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);
Quando eseguo questo, sono avvisati con "in bianco" e poi"uno" come previsto. Tuttavia, se disapprovo quella riga, così sembra.
var my_var = "blank";
var MyFunc = function() {
my_var = "one";
var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);
sto avvisato con "in bianco" e quindi"in bianco". Questo non è quello che mi aspetterei e trovo confuso che l'aggiunta di una riga rimuova il comportamento. Qualcuno può spiegare cosa sta succedendo qui? Sto vedendo questo comportamento sia in firefox che in safari.
Ancora un altro buon motivo per cui mai usare le variabili locali con lo stesso nome di variabili globali è solo in cerca di guai. – jfriend00