如何修复JavaScript代码中的Unexpected Token错误及逻辑问题?
排查并修复你的JavaScript Unexpected Token错误
嘿,我帮你找到了问题所在,首先导致Unexpected Token错误的核心原因是你把do循环的语法写错了,另外还有几个逻辑小问题需要调整,咱们一步步来理清楚:
1. 核心语法错误:do-while循环结构完全不符合规范
JavaScript里的do循环必须遵循 do { 执行代码 } while(循环条件); 的固定结构,你在do的代码块结束后直接写了if语句,这直接给解释器整懵了——它本来期待看到while关键字来闭合循环,结果看到了if,所以当场抛出了Unexpected Token错误。
2. 其他需要修正的细节问题
除了循环结构的硬伤,代码里还有几个小坑:
month[2] = "Marzo;"这里字符串末尾多了个分号,应该改成"Marzo"- 你原本是想用数组存月份名称,但后面却把用户输入的数字赋值给了
month[i],直接把数组里的月份名称覆盖了,逻辑完全搞反了 - 输出的时候直接写
month会打印整个数组,而不是你想要的单个月份名称 - 变量
i一直是0没有变化,哪怕循环能跑起来也会无限循环,而且没处理用户输入非数字的情况
修复后的完整代码
<script language = "javascript"> // 初始化月份名称数组,修正Marzo后面的多余分号 var month = [ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" ]; // 获取用户输入的月份数字,确保输入有效 var inputMonth; do { inputMonth = parseInt(prompt("Type the number of the month:")); // 检查输入是否是1-12之间的有效数字 if (isNaN(inputMonth) || inputMonth < 1 || inputMonth > 12) { alert("Incorrect month! Please enter a number between 1 and 12."); } } while (isNaN(inputMonth) || inputMonth < 1 || inputMonth > 12); // 数组索引从0开始,所以输入的数字要减1才能对应正确的月份 document.write("The month is: " + month[inputMonth - 1] + "."); </script>
修复说明
- 重构了do-while循环的结构,确保语法合法,同时用循环强制用户输入有效的月份数字,直到输入正确才退出
- 修正了数组里的字符串错误,保留了原本存储月份名称的逻辑
- 增加了对非数字输入的判断,避免出现NaN相关的错误
- 输出时通过
inputMonth - 1对应到数组的正确索引,显示用户想要的月份名称
内容的提问来源于stack exchange,提问作者Xavi G
相关产品推荐
相关产品推荐

