Yesterday, I found out weird javascript behavior. I program a few years, but I saw this for the first time. In this fib function:
function fib(n) {
var fiber = { arg: n, returnAddr: null, a: 0 };
rec: while (true) {
if (fiber.arg <= 2) {
var sum = 1;
while (fiber.returnAddr) {
fiber = fiber.returnAddr;
if (fiber.a === 0) {
fiber.a = sum;
fiber = { arg: fiber.arg - 2, returnAddr: fiber, a: 0 };
continue rec;
}
sum += fiber.a;
}
return sum;
} else {
fiber = { arg: fiber.arg - 1, returnAddr: fiber, a: 0 };
}
}
}
there is weird assign:
rec: while (true) { ... }
what that does and how to debug/log that?
how is it possible and why?
can anyone explain that?
I will be grateful, it is the first thing