考虑此代码。这是我正在编写的程序的简化。
let numberOne;
let numberTwo;
function assignNumbers() {
numberOne = Math.random()*10
numberTwo = Math.random()*10
}
我试图弄清楚如何运行assignNumbers()
函数,直到numberOne
和numberTwo
都小于5
为止。这是我想出的,但是我不确定自己走的路是否正确:
if (numberOne < 5 && numberTwo < 5) {
console.log('success');
return;
} else {
//what goes in here?
}
当然,我可以将assignNumbers()
放在else
块中,但是它可能再次失败。如何确保assignNumbers()
一直运行到numberOne
和NumberTwo
都小于5为止?
答案 0 :(得分:2)
您可以使用循环或递归地进行此操作(如Ashay Mandwarya所述)
// Using Loops
let numberOne;
let numberTwo;
function assignNumbers() {
numberOne = Math.random()*10;
numberTwo = Math.random()*10;
}
while(true){
assignNumbers();
if(numberOne < 5 && numberTwo < 5){
console.log(numberOne + ' ' + numberTwo);
break;
}
}
答案 1 :(得分:2)
只需提供一个班轮即可:
do assignNumbers(); while (numberOne > 4 && numberTwo > 4);
然后,您知道numberOne
和numberTwo
都具有正确的值。
答案 2 :(得分:1)
如果数字大于5,则可以使用递归再次调用它。 它会检查两个数字是否均小于5。如果是,则返回数字,否则它将再次调用该函数
let numberOne;
let numberTwo;
function assignNumbers() {
numberOne = Math.random()*10
numberTwo = Math.random()*10
if(numberOne<5 && numberTwo<5)
return numberOne+ " " +numberTwo
else
return assignNumbers()
}
console.log(assignNumbers())
答案 3 :(得分:1)
下面是使用递归和ES6箭头功能和三元运算符的示例
let numberOne;
let numberTwo;
const assignNumbers = () => {
numberOne = Math.random()*10
numberTwo = Math.random()*10
return (numberOne < 5 && numberTwo < 5) ? `${numberOne} ${numberTwo}` : assignNumbers();
}
console.log(assignNumbers())