weixin_57756336 2023-03-13 08:20 采纳率: 84.6%
浏览 31
已结题

为什么log输出显示r未被定义呢


<script>
        let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '7', '8']
        let color = '#'
        let flag = true
        if (flag) {
            for (let i = 1; i <= 6; i++) {
                let random = Math.floor(Math.random() * arr.length)
                color += arr[random]
            }
        } else {
            let r = Math.floor(Math.random() * 256)
            let g = Math.floor(Math.random() * 256)
            let b = Math.floor(Math.random() * 256)
        }
        console.log(color);
        console.log(`rgb${r},${g},${b}`);
    </script>

  • 写回答

6条回答 默认 最新

  • allyfireshen 2023-03-13 08:23
    关注

    因为r,g,b只定义在了else中,且使用let定义的变量只在当前代码块中有效,所以在else外输出的时候就会提示undefined,你可以改成var定义或者在外层定义:

    let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '7', '8']
    let color = '#'
    let flag = true
    let r = 0, g = 0, b = 0
    
    if (flag) {
      for (let i = 1; i <= 6; i++) {
        let random = Math.floor(Math.random() * arr.length)
        color += arr[random]
      }
    } else {
      r = Math.floor(Math.random() * 256)
      g = Math.floor(Math.random() * 256)
      b = Math.floor(Math.random() * 256)
    
      // 或者
      var r = Math.floor(Math.random() * 256)
      var g = Math.floor(Math.random() * 256)
      var b = Math.floor(Math.random() * 256)
    }
    console.log(color);
    console.log(`rgb${r},${g},${b}`);
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月13日
  • 创建了问题 3月13日

悬赏问题

  • ¥15 在触控设备上启动TabTip.exe打不开键盘界面,怎么用代码启动进程打开界面
  • ¥15 lvgl7.11怎么做出文字被选中的效果
  • ¥50 如何快速查看手机目标app的主要服务器ip
  • ¥15 (标签-stm32|关键词-m3)
  • ¥15 matlab中频率调制法代码的解读
  • ¥15 ceph的对象、块、文件相关问题求解答
  • ¥50 如果使用python进行ERA5 10米风场预报检验
  • ¥15 navicat解析mysql密码
  • ¥15 SDAPI(关键词-table)
  • ¥15 unity安卓打包出现问题