Javascript 开关箱始终返回未定义状态

Javascript 开关箱始终返回未定义状态,javascript,Javascript,我试图创建一个切换案例,从事实/引号数组中返回随机引号 虽然switch case没有语法错误,但它总是给我未定义的消息 let fact; const rand= Math.floor(Math.random() * 10); console.log(rand) switch(rand) { case 0: fact=facts[0] break; case 1: fact=facts[1] break; case 2: fact

我试图创建一个切换案例,从事实/引号数组中返回随机引号 虽然switch case没有语法错误,但它总是给我未定义的消息

  let fact;
const rand=  Math.floor(Math.random() * 10);
console.log(rand)
switch(rand) {
  case 0:
    fact=facts[0]
    break;
  case 1:
      fact=facts[1]
    break;
  case 2:
     fact= facts[2]
      break;
  case 3:
     fact= facts[3]
      break;
  case 4:
     fact= facts[4]
      break;
  case 5:
     fact= facts[5]
      break;
  case 6:
      fact=facts[6]
      break;
  case 7:
      fact=facts[7]
      break;
  case 8:
     fact= facts[8]   
      break;
      default:
    fact = "dino random fact";

}
在这里,我尝试将其记录到控制台:

    tile.classList.add("grid-item");
   tile.innerHTML=`<h3>${dinosaur.species}</h3>
                  
                   <p> ${console.log(fact)} </p>
                   <img src="images/${dinosaur.species}.png">
                  
                   `;
tile.classList.add(“网格项”);
tile.innerHTML=`${degoron.species}
${console.log(事实)}

`;
事实不存在,因此当您设置事实=事实[某物]


事实未定义

您可以将随机值作为索引,并将默认值作为例外值

const
事实=['0','1','2','3','4','5','6','7','8']
rand=Math.floor(Math.random()*10),
事实=rand==9
?  “恐龙随机事实”
:事实[兰特];

console.log(事实)
您是否有
事实
数组?请不要使用此开关语句,只使用
事实=事实[rand]
。最不容易出错的解决方案是
常量事实=事实[Math.floor(Math.random()*facts.length)]
。如果您的目标只是从数组中选择一个随机元素,也就是说。是的,这是因为您试图访问数组中没有值的位置,这就是返回未定义的原因事实数组是从dom返回的,所以我没有包含它,我们可以使用一个更小的数组和虚拟数据来测试它们的存在,但我没有在帖子中包含它们谢谢,这真的很酷