为什么“t”在“do {j ++; t + = j;} while(j <5);”中回来15?

时间:2011-10-31 01:22:22

标签: javascript

var j=0, t=0;
do{j++; t+=j;}while(j<5);
alert(t);

为什么t在上面的代码中返回15?

5 个答案:

答案 0 :(得分:5)

让我们把它清理干净:

var j = 0;
var t = 0;

do {
  j++;
  t += j;
} while (j < 5);

alert(t);

如果您手动展开(我会),这是没有循环的等效代码:

var j = 0;
var t = 0;

j++; // j = 1
t += j;

j++; // j = 2
t += j;

j++; // j = 3
t += j;

j++; // j = 4
t += j;

j++; // j = 5
t += j;

alert(t);

冷凝这个:

var t = 0;

t += 1;
t += 2;
t += 3;
t += 4;
t += 5;

alert(t);

结果是:

var t = 1 + 2 + 3 + 4 + 5;

alert(t);

我认为你可以做简单的算术:

var t = 15;

alert(t);

答案 1 :(得分:0)

因为j在评估while测试之前递增,所以循环将针对以下j值运行:

j = 1, 2, 3, 4, 5

最终值t为15(1 + 2 + 3 + 4 + 5)。

答案 2 :(得分:0)

可能有3个陷阱:

  1. do block总是执行一次 - 与条件无关
  2. 它使用t + = j,因此它将j加到前一个t值
  3. 当j变为5时,仍然执行do循环
  4. 你去:

    循环#0: J = 1 T = 1

    循环#1: J = 2 T = 3

    循环#2: J = 3 T = 6

    循环#3: J = 4 T = 10

    循环#4: J = 5 T = 10

答案 3 :(得分:0)

这是非常微不足道的东西 - 你应该能够按照我在这里所拥有的东西

j = 1; t = 1
j = 2; t = 3
j = 3; t = 6
j = 4; t = 10
j = 5; t = 15

答案 4 :(得分:0)

每次循环运行时,j都会递增。在增加之后,t将j添加到它。在第一遍中,t是1.然后j变为2,t变为3,依此类推:

j=1, t=1
j=2, t=3
j=3, t=6
j=4, t=10
j=5, t=15 (j is not less than 5, loop ends).