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

JavaScript墨西哥无效时间场景AssertionError问题排查求助

问题分析与修复

错误原因

你的代码存在两个核心问题,导致墨西哥无效时间(如负数时间)测试失败:

  1. 未优先校验时间有效性:任务规则明确要求,时间小于0或大于等于24时,无论所属国家都需返回null。但你的代码处理墨西哥场景时,直接判断time < 12,若输入负数时间(如-3),该条件会成立,错误返回buenos dias而非null。
  2. 最后分支逻辑错误:else if (country === 'Spain' || 'Mexico' || 'France' && time > 24)的写法完全不符合逻辑——逻辑运算符&&优先级高于||,且字符串'Mexico'在布尔判断中属于真值,此表达式会被解析为country === 'Spain' || true || ('France' && time>24),永远为真,但它处于最后分支,无法覆盖前面漏判的无效时间场景(比如墨西哥的负数时间)。

另外,西班牙的无效时间测试通过,大概率是因为测试用例仅覆盖了time >=24的情况,未涉及负数时间;而墨西哥的无效时间测试包含了负数场景,因此暴露了问题。

修复后的代码

调整逻辑顺序,先校验时间有效性,再处理不同国家的有效时间场景:

function sayHello(country, time) {
    // 先处理所有无效时间:小于0或大于等于24
    if (time < 0 || time >= 24) {
        return null;
    }

    let greeting;
    // 合并西班牙、墨西哥的相同逻辑
    if (country === 'Spain' || country === 'Mexico') {
        greeting = time < 12 ? 'buenos dias' : 'buenas noches';
    } else if (country === 'France') {
        greeting = time < 12 ? 'bon matin' : 'bon soir';
    } else {
        // 其他国家统一返回null
        greeting = null;
    }

    return greeting;
}

修复说明

  • 优先判断时间有效性,从根源避免无效时间进入后续分支;
  • 合并西班牙与墨西哥的重复逻辑,精简代码同时保证逻辑清晰;
  • 明确处理其他国家的场景,覆盖所有边缘情况。

内容的提问来源于stack exchange,提问作者AhmedFx220

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:25:21