Странная переменная не определена?

Хорошо, ребята, поэтому у меня есть этот код:

var q=(function(){
    var u,q,x;
    x=616;
    q=q_construct();
    qp_construct();
    return q;
    function q_construct(){
        var q,pro;
        q={
            a:1
        };
        return q;
    };
    function qp_construct(){
        console.log('1 ⇒    ',q,x);
        Object.defineProperty(Object.prototype,'q',{get:function(){
            console.log('2 ⇒    ',q,x);
            var r={b:2};
            return r;
        }});
    };
})();

Когда я вхожу y={z:616}; y.q; в консоль я получаю:

1 ⇒  Object {a: 1} 616

y={z:616}; y.q;                 //  console entry point

2 ⇒  Object {a: 1} 616
Object {b: 2}

И все же, если я изменюсь:

var r={b:2};
return r;

в

var q={b:2};
return q;

результат меняется с:

2 ⇒  Object {a: 1} 616

в

2 ⇒  undefined 616

Я не могу выяснить, почему при установке этого имени переменной q, q из внутренней области видимости переопределяется как undefined, Что-то покачивается в затылке, говоря, что я прочитал что-то о "подъеме", что может помочь?

0 ответов

Другие вопросы по тегам