为什么这个循环停在99999

时间:2018-06-10 07:06:18

标签: javascript

我在编辑器中运行此代码

let flag = true;
let counter = 0;
while(flag === true){
    console.log(counter);
    counter+=1;
    if (counter === 100000){
        break;
    }
}

我想问为什么这段代码在99999处停止。在if块中,它表示如果counter等于100000,则循环将停止。为什么它停在99999?

3 个答案:

答案 0 :(得分:0)

您可以在检查后移动增量。

然后你得到100000,因为输出更早,条件检查增量值。



let flag = true;
let counter = 0;

while (flag) {
    console.log(counter);     // <--\ allow an output
    if (counter === 100000) { // ---/ of the last value
        break;
    }
    counter++;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

let flag = true;
let counter = 0;
while(flag === true){
   counter+=1; // from 99999 to 100000
   console.log(counter); // counter is 100000

   if (counter === 10){
     break;
   }
}

只需将控制台日志行和增量行相互替换即可。

打印计数器时,只有在递增计数器后才能获得最后一次迭代的值,如果按照我的建议更改行,则打印的计数器是当前的迭代。

答案 2 :(得分:0)

counter等于100000时,循环 停止。但是,您将看到的最后一个数字是99999.这就是原因:

let flag = true;
let counter = 0;
while(flag === true){
    // suppose this is the last iteration
    console.log(counter); // 99999 is printed here
    counter+=1; // now counter is 100000
    if (counter === 100000){ // this becomes true
        break; // the loop stops!
    }
}

使其打印100000的一种方法是在console.log之前添加另一个break