问答详情
源自:4-10 编程练习

请教大佬,这段switch代码一直报错

<script type="text/javascript">
 
 var infos = [
['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']
];


    for(var i=0;i<=infos.length;i++){
    if(infos[i][1]=="女" && infos[i][3]=="大一") {
        document.write(infos[i][0]+"<br>")
    }
 }
 
  
</script


这个写下来没有问题,但是把for那段换成:

    for(var i=0;i<=infos.length;i++){
       switch(infos[i][1]+infos[i][3]){
       case "女大二":
        document.write(infos[i][0]+"<br>");
        break;
       }
     }


虽然还是能出结果,但是控制台一直在报错:Uncaught TypeError Cannot read properties of undefined 

请问哪位大佬能帮忙看一下,这个是啥情况?

提问者:慕码人7255994 2022-05-04 18:10

个回答

  • 慕函数7131464
    2023-03-01 09:39:54

    用switch的话它会提示读取对象为空(switch(infos[i][1]+infos[i][3]),你知道为什么吗?http://img4.mukewang.com/63feace800015a7b04720038.jpg

  • 慕码人7255994
    2022-05-16 22:53:11

    找到原因了:i<=infos.length,所以出错,换成i<infos.length即可

  • 都白白
    2022-05-05 20:09:33

    i不应该≤length吧 都超了索引了,<就行了