Javascript Делать, пока l oop останавливается только после одной итерации - PullRequest
1 голос
/ 03 апреля 2020

У меня есть do while l oop, который останавливается только после одной итерации, хотя условие имеет ложный результат более одного раза. Другое дело - все, что приходит после оператора while, не выполняется. Код очень длинный, поэтому вот пример условия проверки:

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

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

Кто-нибудь знает почему?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Причина в том, что х не определено. пусть получил блок-прицел. и вы объявили x и y в блоке do, который не имеет области видимости после блока. Если вы хотите использовать их в состоянии while, поместите их либо снаружи, либо измените значение let на var.

В результате вы получили ошибку и, следовательно, код не выполняется через некоторое время. Чтобы почувствовать ошибку, окружите ее попыткой 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)

Надеюсь, это поможет!

1 голос
/ 03 апреля 2020

область видимости x и y внутри оператора do означает, что его нет в операторе 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);
 
...