Javascript “为什么?”;";在;dowhile(j<;5)&引用;返回15? var j=0,t=0; do{j++;t+=j;}while(j

Javascript “为什么?”;";在;dowhile(j<;5)&引用;返回15? var j=0,t=0; do{j++;t+=j;}while(j,javascript,Javascript,因为在计算while测试之前j是递增的,所以循环将针对以下j值运行: var j=0, t=0; do{j++; t+=j;}while(j<5); alert(t); 它给出了t的最终值为15(1+2+3+4+5)。可能有3个陷阱: do块始终执行一次-与条件无关 它使用t+=j,因此它将j与之前的t值相加 当j变为5时,仍然执行do循环 给你: 循环#0: j=1 t=1 循环#1: j=2 t=3 循环#2: j=3 t=6 循环#3: j=4 t=10 循环#4: j=5 t=1

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

var j=0, t=0;
do{j++; t+=j;}while(j<5);
alert(t);
它给出了t的最终值为15(1+2+3+4+5)。

可能有3个陷阱:

  • do块始终执行一次-与条件无关
  • 它使用t+=j,因此它将j与之前的t值相加
  • 当j变为5时,仍然执行do循环
  • 给你:

    循环#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

    这是非常琐碎的东西-你应该能够理解我这里的内容

    j = 1, 2, 3, 4, 5
    

    每次循环运行时,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=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).
    
    这是:

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

    因为0+1+2+3+4+5=15?我建议只写下每次迭代代码所做的事情;它很短,而且没有什么棘手的地方。因为1+2+3+4+5的总和是15!@kevin——Grady,我想你已经有了!!你为什么认为它不应该呢?
    var t = 1 + 2 + 3 + 4 + 5;
    
    alert(t);
    
    var t = 15;
    
    alert(t);