You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

getRandomIntInclusive使用是否正确?为何1-4范围随机数触发异常分支

核心错误点
  • 随机数函数缺少返回值
    你定义的getRandomIntInclusive函数仅将计算结果打印到控制台,没有使用return语句返回结果,JS中没有显式return的函数调用后默认返回undefined,因此randomColor(1,4) === 1这类判断永远不成立,必然触发else分支的异常日志。
  • 条件判断重复生成随机数
    即便给随机函数补充了返回值,当前代码的每个if/else if分支都会重新调用一次随机函数生成新值,会出现多次生成的随机数都无法匹配当前判断条件的情况,比如第一次判断生成2不匹配===1的条件,第二次判断生成3不匹配===2的条件,最终还是会进入else分支,不符合你只生成一次随机数匹配对应按钮的需求。
修正后的代码
// 修正随机函数,增加return返回结果
let randomColor = function getRandomIntInclusive(min, max){
    min = Math.ceil(min)
    max = Math.floor(max)
    const res = Math.floor(Math.random() * (max - min + 1) + min)
    console.log(res)
    return res // 必须返回结果才能在后续判断中使用
}
function getRandomColor() {
    // 只生成一次随机数,存入变量后再做判断
    const num = randomColor(1, 4)
    if (num === 1){
        redBtn.style.opacity = "90%"
        setTimeout(function(){
            redBtn.style.opacity = "40%"
        },300)
        console.log(num)
    } 
    else if (num === 2){
        blueBtn.style.opacity = "90%"
        setTimeout(function(){
            blueBtn.style.opacity = "40%"
        },300)
        console.log(num)
    } 
    else if (num === 3){
        greenBtn.style.opacity = "90%"
        setTimeout(function(){
            greenBtn.style.opacity = "40%"
        },300)
        console.log(num)
    } 
    else if (num === 4){
        yellowBtn.style.opacity = "90%"
        setTimeout(function(){
            yellowBtn.style.opacity = "40%"
        },300)
       console.log(num)
    } 
    else {
        console.log('Something is not working')
        console.log(num)
    }
}
getRandomColor()

内容的提问来源于stack exchange,提问作者Nicole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:27:03