No he podido encontrar una coincidencia exacta en mi problema, aunque existen muchas preguntas sobre el alcance de JavaScript. Aquí está mi código actual para la pregunta.Javascript Scoping Confusion
var my_var = "blank";
var MyFunc = function() {
my_var = "one";
//var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);
Cuando ejecuto esto, estoy alertado con "en blanco" y luego "uno" como se esperaba. Sin embargo, si elimino el comentario de esa línea, se verá así.
var my_var = "blank";
var MyFunc = function() {
my_var = "one";
var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);
Estoy alertado con "en blanco" y luego "en blanco". Esto no es lo que esperaría y me resulta confuso que agregar una línea eliminará el comportamiento. ¿Alguien puede explicar lo que está pasando aquí? Estoy viendo este comportamiento tanto en Firefox como en Safari.
Sin embargo, otra buena razón para tener que utilizar variables locales con el mismo nombre que las variables globales simplemente es buscar problemas. – jfriend00