In the following code, how is it possible that variable temp is still alive after the call to the Decorate ends?
function Decorate(target, key) {
let temp = target[key];
Object.defineProperty(target, key, {
get: function() {
console.log('getter executed');
return temp;
},
set: function(newValue) {
console.log('setter executed');
temp = newValue;
}
});
}
class Test {
x;
constructor() {}
};
let t = new Test();
Decorate(t, 'x'); //first and only decorator call after which the variable temp should be dead
t.x = 123; //setter sets x to 123, obviously it somehow still uses temp
t.x = 256; //second setter call sets x to 256, temp still somehow alive
t.x = 357; //etc.