I know some closure mechanism, but this code confuses me.
I can understand why num value in message:1 is printed because of unmount's stale closure
but why num value: 5 is printed instead of num value: 1? Isn't num also stale in unmount closure?
const test = () => {
let num = 0;
const effect = () => {
num += 1;
const message = `num value in message:${num}`;
return function unmount() {
console.log(message);
console.log("num value:", num);
};
};
return effect;
};
const add = test();
const unmount = add();
add();
add();
add();
add();
unmount(); // num value in message:1 ; num value: 5