使用前缀增量在while循环中相乘

时间:2016-07-06 17:30:18

标签: javascript while-loop prefix

我是Javascript的新手,我需要了解我刚刚在互联网上看到的这个简单代码如何工作:

var f = 1;
var i = 2;

while(++i<5) {
    f*=i;
}

console.log(f);

有人可以帮我理解这个循环是如何工作的吗?

3 个答案:

答案 0 :(得分:3)

检查评论以理解它:

var f = 1;
var i = 2;

while(++i<5) { //will increment first and then check if the incremented value is less than 5

    f*=i; //can also be written as f = f*i
}

console.log(f);

第一次迭代::while(3&lt; 5)它将使f = 1 * 3即3

第二次迭代::while(4&lt; 5)它将使f = 3 * 4即12

第三次迭代::while(5 <5),这是假的,所以循环将停止

答案 1 :(得分:2)

执行相同操作的不那么神秘的while循环将是:

&#13;
&#13;
var f = 1;
var i = 2;

++i;                // increment i
while (i < 5) {     // loop while i is less than 5
  f = f * i;        // assign f * i to f. aka "scale f by i"
  ++i;              // increment i
}

console.log("i:", i, "f:", f);
&#13;
&#13;
&#13;

这是一张桌子

Iteration    |   i   |   f
------------------------------
Before loop  |   3   |   1
After 1st    |   4   |   3
After 2nd    |   5   |  12

它在第二次迭代后退出,因为5不小于5.

答案 2 :(得分:1)

每次执行while循环时,括号内的表达式都是真实的(https://developer.mozilla.org/en-US/docs/Glossary/Truthy)。因此,当i小于5时,执行迭代。但++之前的i可能会非常棘手。在执行之前添加了前缀,因此,此循环将使用i=2+1=3i=3+1=4进行迭代。