Wywoływanie zmiennych zdefiniowanych w funkcji zewnętrznej z funkcji wewnętrznej za pomocą debugera

OdjQuery docs javascript guide:

Ponieważ zasięg lokalny działa poprzez funkcje, wszelkie funkcje zdefiniowane w innym mają dostęp do zmiennych zdefiniowanych w funkcji zewnętrznej:

function outer() {
    var x = 5;
    var y = 2;
    function inner() {
        console.log( x );
        debugger; // <-- !!!
    }
    inner();
}
outer()

Konsola uruchomiona za pomocądebugger:

> x
5
> y
ReferenceError: y is not defined

Ponieważ zmienne zdefiniowane wouter funkcja może być używana przezinner funkcja (np.x luby), dlaczego debuger nie może wywołaćy zmienna?

Podejrzewam, że ludzie odpowiedzą, że debuger pokazuje tylko zmienne zdefiniowane w najbardziej wewnętrznym / lokalnym zakresie. Powodem tego jest to, że w przeciwnym razie nie można dokonać rozróżnienia między debuggerem między wewnętrznym i zewnętrznym zakresem podczas sprawdzania zmiennej za pomocą debugera w funkcji wewnętrznej. Dodatkowo, każda zmienna zdefiniowana w zewnętrznym zakresie, który jest wykonywany w wewnętrznym zakresie, pozwala na dostęp do debuggera.

Alejeśli tak jest, czy nie ma sposobu, aby nadal nazywać zmiennąy z konsoli wewnątrz funkcji wewnętrznej? (używając notacji uwzględniającej zakres, np.outer.y)

Edytuj: Debugery w innych językach

Najwyraźniej to zachowanie debuggera nie ogranicza się do javascript. Debuger Pythonapdb na przykład zachowuje się podobnie:

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

questionAnswers(1)

yourAnswerToTheQuestion