#javascript #loops
Вопрос:
let dice = Math.floor(Math.random() * 6) 1;
while (dice !== 6) {
console.log(You rolled a ${dice});
}
Пожалуйста, объясните этот код?
Комментарии:
1. Значение
dice
устанавливается только один раз, перед циклом.
Ответ №1:
Вам просто нужно назначить dice
значение в while
цикле, пока dice !== 6
let dice = Math.floor(Math.random() * 6) 1;
while (dice !== 6) {
console.log(`You rolled a ${dice}`);
dice = Math.floor(Math.random() * 6) 1;
}
Ответ №2:
Сначала и только один раз вы генерируете случайное число ( dice
).
Если это число равно 6, оно пропускает цикл while.
Если это не 6, он входит в цикл while.
Значение dice
не меняется внутри цикла while, поэтому оно бесконечно повторяется.
Ответ №3:
вы никогда не выбирали следующие случайные кости. включите оператор dice в свой цикл, чтобы у вас было новое значение переменной dice, иначе она всегда будет иметь одно и то же значение.
Ответ №4:
Вы устанавливаете значение кубика только один раз в начале, если вы получите число, отличное от 6, то луп будет повторяться вечно, попробуйте поставить
Математический этаж(математический случайный() * 6) 1
в качестве условия для цикла while, тогда вы получите желаемый результат
Ответ №5:
Значение dice
устанавливается только один раз, перед циклом. Переменная сохраняет свое значение, если вы явно не измените ее.
Что вы могли бы сделать, так это создать небольшую функцию для броска костей. Это избавляет вас от необходимости вводить код в функции более одного раза:
let dice = () => {return Math.floor(Math.random() * 6) 1;}
roll = dice(); /* Set the initial value of roll */
while (roll !== 6) {
console.log(`You rolled a ${roll}`);
roll = dice(); /* Set the value for the next time round in the loop */
}
Обратите внимание, что вызов функции содержит круглые скобки ()
, чтобы заставить ее оценить функцию.