简单而javascript中的循环不尊重限制

时间:2018-05-30 17:44:36

标签: javascript while-loop

我想与您分享我的经历。我刚开始写一本书来学习Javascript。一开始有点令人沮丧,我得到了关于函数,闭包和递归的章节,看起来真的很复杂,但我会努力工作,因为我真的想学习。 (感谢阅读:))

现在我遇到了一个While循环的问题,我不明白为什么它在达到限制50时不会停止。这是代码:

function fib (one, two, end) {
  while(two < end) {
    if (one == 1) console.log(one);
    two += one;
    console.log(two);
    one += two;
    console.log(one);
  }
}

fib(1, 1, 50);

结果如下,超出了限制50:

1
2
3
5
8
13
21
34
55
89
144

非常感谢你的帮助,对不起要问这么简单的事情! : - )

2 个答案:

答案 0 :(得分:0)

两个是&lt; 50当循环的最后一次迭代开始时,但是在循环的最后一次迭代中增加了两个值。

答案 1 :(得分:0)

循环条件在每次执行主体之前发生。您正在修改身体内two的值,当循环尝试再次运行时,它会看到您已超出界限并停止。这就是代码运行时会发生的情况。

初始值
one == 1
two == 1

两个不到50?是的,开始循环。
第一轮结果
two == 2
one == 3

两个不到50?是的,再去一次。
第二轮结果
two == 5
one == 8

两个不到50?是的,再去一次。
第3轮结果
two == 13
one == 21

两个不到50?是的,再去一次。
第4轮结果
two == 34
one == 55

两个不到50?是的,再去一次。
第5轮结果
two == 89
one == 144

两个不到50?不,两个现在大于或等于50.停止。