JavaScript新手求助:如何在JavaScript中生成新随机数?
解决乘法口诀工具无法生成新随机数的问题
嘿,我懂你的烦恼!作为JavaScript新手碰到这种小卡点太正常了~你现在的问题根源在于随机数变量的作用域,咱们一步步来解决:
问题分析
你把r1和r2定义在start函数外面的全局作用域里了:
var r1 = Math.floor(Math.random() * 13); var r2 = Math.floor(Math.random() * 13); function start() { println("Welcome to the multiplication helper! "); // ...你的其他代码 }
这种情况下,r1和r2只会在页面加载完成时生成一次随机数,之后不管你调用多少次start函数,这两个变量的值都不会更新,自然没法得到新的随机乘法题啦。
解决方案
把随机数的生成逻辑移到start函数内部!这样每次调用start的时候,都会重新计算新的随机数:
function start() { // 每次调用函数都重新生成随机数 var r1 = Math.floor(Math.random() * 13); var r2 = Math.floor(Math.random() * 13); println("Welcome to the multiplication helper! "); // 比如这里可以输出乘法题: println(`What's ${r1} × ${r2}?`); // ...后续的答题判断逻辑也能直接用r1和r2 }
额外小提示
如果你的代码里需要在start函数外部也访问这两个随机数(比如用来验证答案),可以把它们声明为全局变量,但在函数内部重新赋值:
// 全局声明变量,但不初始化 let r1, r2; function start() { // 每次调用函数更新全局变量的值 r1 = Math.floor(Math.random() * 13); r2 = Math.floor(Math.random() * 13); println("Welcome to the multiplication helper! "); println(`What's ${r1} × ${r2}?`); } // 比如验证答案的函数 function checkAnswer(userAnswer) { if (userAnswer === r1 * r2) { println("答对啦!🎉"); } else { println(`答错了,正确答案是${r1 * r2}哦~`); } }
这样就能完美实现每次启动工具都生成新的乘法题了,加油!
内容的提问来源于stack exchange,提问作者BCM
相关产品推荐
相关产品推荐

