怪异的javascript行为(是否将循环分配给变量?)

时间:2018-08-07 11:01:52

标签: javascript

昨天,我发现了奇怪的JavaScript行为。我编程了几年,但是我是第一次看到它。在此fib函数中:

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 };
    }
  }
}

有奇怪的分配:

rec: while (true) { ... }

这是做什么的,以及如何调试/记录它?

这怎么可能?为什么?

有人可以解释吗?

我将不胜感激,这是第一件事

0 个答案:

没有答案