В книге "JavaScript для детей" в конце главы 6 есть эта задача создать генератор случайных строк, из букв, выведенных из var alphabet = "abcdefghijklmnopqrstuvwxyz"; В книге автор спрашивает, как использовать цикл WHILE, который я не смог сделать.
Чем я узнал, что правильный ответ требует цикла FOR и идет следующим образом:
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var randomString = "";
var stringLength = 6;
for (var i = 0; i < stringLength; i++) {
randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}
console.log(randomString);
мой вопрос: можно ли сделать то же самое с циклом WHILE?
Каждый for
цикла может быть записана как в while
цикла. В целом ваши for
дескриптора контура имеет три выражения: инициализация, условие и какое - то шаг. Позвольте называть эти a
, b
и c
.
Тогда это:
for (a; b; c) {
// ...
}
эквивалентно:
a;
while (b) {
// ...
c;
}
NB: Там могут быть тонкие различия, когда let
используется.
Конечно, но вам придется управлять увеличением цикла:
var i = 0;
while (i < stringLength) {
randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
i++;
}
ИМХО, здесь более подходит цикл for
.
while
вел себя так же, как for
i++;
должен быть последним выполненным оператором цикла
Да, вы можете сделать то же самое, если вы его правильно реализуете. Проверьте на randomString.length и сравните его с выбранной вами строкойLength.
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var randomString = "";
var stringLength = 6;
while(randomString.length < stringLength){
randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}
console.log(randomString);