JavaScript对数组执行搜索后while循环无任何输出该如何解决?
问题代码BUG排查
- 变量大小写不匹配:全局定义的数组长度变量为大写
SIZE,while循环判断条件中错误使用了未定义的小写size,JS对变量名大小写敏感,直接导致循环条件失效 - 循环变量i未重置:前面填充数组的for循环结束后,i的值已经为4(等于SIZE),直接在while循环中复用该变量,循环初始就不满足
i < SIZE的条件,代码不会进入循环执行 - 循环逻辑顺序错误:while循环内先执行
i++再做匹配判断,会直接跳过数组索引为0的第一个元素,同时当i等于3时执行i++会得到4,访问actors[4]会出现数组越界 - 代码结构缺失大括号:while循环、匹配成功的if分支都缺少闭合大括号,和后续判断未找到的if逻辑层级混乱,即使进入循环也会执行异常
修复后可运行代码
var SIZE = 4; var actors = new Array(SIZE); // 存储演员姓名的数组 var roles = new Array(SIZE); // 存储对应角色的数组 for (var i = 0; i < SIZE; i++) { actors[i] = prompt ("请输入你第" + (i + 1) + "位喜欢的演员"); roles[i] = prompt ("第" + (i + 1) + "位演员饰演的角色是什么?"); } var favorite; // 存储要搜索的演员姓名 var found = false; var BR = "<br>"; favorite = prompt ("请输入你最喜欢的演员姓名"); // 重置循环变量i为0 var i = 0; // 使用正确的大写SIZE变量 while (i < SIZE && !found) { // 先判断当前i对应的元素,再执行i++ if (actors[i] == favorite) { found = true; document.write("你最喜欢的演员" + actors[i] + "饰演的角色是" + roles[i] + BR); } i++; } /* 注释掉的for循环修复版 for(var i = 0; i < SIZE; i++) { if ( favorite == actors[i]) { found = true; document.write("你最喜欢的演员" + actors[i] + "饰演的角色是" + roles[i] + BR); } } */ // 未匹配到对应演员时执行 if (!found) { document.write("抱歉,我们没有找到对应姓名的演员" + BR); }
内容的提问来源于stack exchange,提问作者Douglas Fuentes
相关产品推荐
相关产品推荐

