Javascript while 循环仅在一次迭代后停止

Javascript Do while loop stops after one iteration only

我有一个只在一次迭代后停止的 do while 循环,尽管该条件多次出现错误结果。 另一件事 - while 语句之后的所有内容都不会执行。 代码很长所以这里是测试条件的例子:

do {
  let x = 0;  
  let y = 3;

  for (let j = 0; j < 9; j++) {
    if(j%2==0){
      x++;
    }
  }
} while (x < y);

有人知道为什么吗?

do 语句中 x 和 y 的范围意味着它不存在于 while 语句中。但是你的代码循环了多次

let x=0;  
let y=3;
do{

 
 for (let j=0; j<9; j++){
 if(j%2==0){x++;}
 console.log(x,y) 
   }
   
 }while(x<y);
 

   
do{
  let x=0;  
  let y=3;

 
 for (let j=0; j<9; j++){
 if(j%2==0){x++;}
 console.log(x,y) 
   }
   
 }while(x<y);
 

原因是x没有定义。 let 有一个块作用域。并且您在 do 块中声明了 x 和 y,该块之后没有作用域。如果您想在 while 条件下使用它们,请将它们放在外面或将 let 更改为 var.

您将以错误结束,因此代码不会在一段时间后执行。用 try catch 来感知错误。

do {
  let x = 0;
  let y = 3;
  for (let j = 0; j < 9; j++) {
    if (j % 2 == 0) {
      x++;
    }
  }
} while (x < y);

do {
  var x = 0;
  var y = 3;
  for (let j = 0; j < 9; j++) {
    if (j % 2 == 0) {
      x++;
    }
  }
} while (x < y);
console.log(x)

希望对您有所帮助!