You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:06:28