Llamando variables definidas en la función externa desde la función interna con el depurador
Desde eljQuery docs javascript guide:
Debido a que el alcance local funciona a través de funciones, cualquier función definida dentro de otra tiene acceso a las variables definidas en la función externa:
function outer() {
var x = 5;
var y = 2;
function inner() {
console.log( x );
debugger; // <-- !!!
}
inner();
}
outer()
Consola activada condebugger
:
> x
5
> y
ReferenceError: y is not defined
Dado que las variables definidas en elouter
La función puede ser utilizada por elinner
función (por ejemplo,x
oy
), ¿por qué el depurador no puede llamar aly
¿variable?
Sospecho que la gente responderá que el depurador solo muestra las variables definidas en el ámbito más interno / local. La razón de esto es que, de lo contrario, no se podría hacer una distinción utilizando el depurador entre el ámbito interno y externo al inspeccionar una variable utilizando el depurador en la función interna. Además, cada variable definida en un ámbito externo que se ejecuta en el ámbito interno permite al depurador acceder a él.
Perosi ese es el caso, ¿no hay alguna manera de seguir llamando a la variabley
¿Desde la consola dentro de la función interior? (usando una notación respetuosa de alcance, por ejemplo,outer.y
)
Al parecer, este comportamiento de un depurador no se limita a javascript. El depurador de Pythonpdb
por ejemplo se comporta de manera similar:
def outer():
x = 5
y = 2
def inner():
print x
import pdb; pdb.set_trace()
inner()
outer()
(Pdb) x
5
(Pdb) y
*** NameError: 'y' is not defined