I’ve been wanting to generate random numbers through a function and then use setInterval to repeat that function and give me a new number every time.
function randNum(prevNum) { let randNum = Math.round(Math.random() * 12) //choose a number between 0 and 12 while (randNum == prevNum){ //if the chosen number is the same as prevNum, choose another random number randColor = Math.round(Math.random() * 12) } prevNum = randColor //assign current value to parameter return (prevNum); //return parameter } prevNum = 0, prevNum = setInterval (randNum, 1000, prevNum) //assign returned parameter to current variable, then go back into the function with the new parameter value.
also using node so semicolons might be missing.
Advertisement
Answer
When you use prevNum
as a setInterval()
argument, you’re always passing the original value of the variable to the callback function. You should just use the global variable directly rather than passing it as a parameter.
You also have a typo, randColor
should be randNum
.
let prevNum = 0; function randNum() { let newNum while (true) { newNum = Math.round(Math.random() * 12) //choose a number between 0 and 12 if (newNum != prevNum) { break; } } prevNum = newNum //save the current value console.log(prevNum); } let interval = setInterval(randNum, 1000)
The return value of the callback function isn’t used, so there’s no point in return prevNum;
. And you shouldn’t assign the result of setInterval()
to your number variable — it returns a timer ID, not the value of the function.