Странная переменная не определена?
Хорошо, ребята, поэтому у меня есть этот код:
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
, Что-то покачивается в затылке, говоря, что я прочитал что-то о "подъеме", что может помочь?