do...while
" porque primeiro ele " do
" uma passagem do código dentro do loop, não importa o que aconteça, e então executa " while
" uma condição especificada é verdadeira e pára assim que a condição não for mais verdadeira. Vamos ver um exemplo. var ourArray = [];Isso se comporta exatamente como você esperaria com qualquer outro tipo de loop, e a matriz resultante será semelhante a
var i = 0;
Faz {
ourArray.push (i);
i ++;
} enquanto (i <5);
[0, 1, 2, 3, 4]
. No entanto, o que faz o do...while
diferente de outros loops é como ele se comporta quando a condição falha na primeira verificação. Vamos ver isso em ação. Aqui está um loop regular que executará o código no loop desde que i < 5
. var ourArray = [];Observe que inicializamos o valor de
var i = 5;
enquanto (i <5) {
ourArray.push (i);
i ++;
}
i
como sendo 5. Quando executamos a próxima linha, notamos que i
não é menor que 5. Portanto, não executamos o código dentro do loop. O resultado é que o ourArray
terá nada adicionado a ele, então ele ainda ficará assim []
quando todo o código no exemplo acima terminar de ser executado. Agora, dê uma olhada em um do...while
loop. var ourArray = [];Neste caso, inicializamos o valor de
var i = 5;
Faz {
ourArray.push (i);
i ++;
} enquanto (i <5);
i
como 5, assim como fizemos com o loop while. Quando chegamos à próxima linha, não há verificação para o valor de i
, então vamos para o código dentro das chaves e executá-lo. Vamos adicionar um elemento à matriz e incrementar i
antes de chegarmos à verificação de condição. Então, quando chegarmos a verificar se i < 5
ver que i
agora é 6, o que falha na verificação condicional. Então, saímos do loop e acabamos. No final do exemplo acima, o valor de ourArray
é [5]
. Essencialmente, um laço do...while
while garante que o código dentro do loop será executado pelo menos uma vez. Vamos tentar fazer um do...while
loop para trabalhar, empurrando valores para um array. while
loop no código a um do...while
loop para que o loop vai empurrar o número 10 a myArray
, e i
será igual a 11
quando o código termina a execução. do...while
loop para isso.
testString: 'assert(code.match(/do/g), "You should be using a do...while
loop for this.");'
- text: 'myArray
deve ser igual a [10]
.'
testString: 'assert.deepEqual(myArray, [10], "myArray
should equal [10]
.");'
- text: i
deveria igual a 11
testString: 'assert.deepEqual(i, 11, "i
should equal 11
");'
```