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

请帮我排查这段判断观影资格的JavaScript代码存在的问题

你的这段JavaScript代码存在这些问题,我来逐一拆解:
  • 类型不匹配引发的逻辑偏差:prompt()返回的是字符串类型,你直接拿它和数字13做比较(age >= 13),会触发JS的隐式类型转换,容易出现不符合预期的结果。比如用户输入"abc"这种非数字内容,转成数字会变成NaN,NaN >=13的结果是false,但这属于无效输入,不是真实的年龄判断。

  • 松散相等的匹配漏洞:你用accompanied == "Yes"做判断,首先==是松散相等,可能出现意外类型转换;更关键的是用户输入未必严格符合"Yes"格式——比如输入"yes"、"YES"、" yes "(带空格),这些都会被判定为false,和实际需求不符。

  • 语法错误:你的else代码块缺少闭合的大括号},这会直接导致代码无法运行,浏览器会抛出语法报错。

  • 缺失输入有效性校验:没有处理用户点击取消(prompt会返回null)、输入空字符串的情况,这些场景下代码逻辑会直接出错。


这里是修正后的代码,解决了上述所有问题:

// 判断用户年龄是否≥13或有成人陪同
var ageInput = prompt("How old are you");
var accompaniedInput = prompt("Are you accompanied by an adult");

// 处理年龄输入:转数字,兼容无效输入
var age = ageInput ? parseInt(ageInput, 10) : NaN;
// 处理陪同输入:统一格式,兼容取消/空输入
var isAccompanied = accompaniedInput ? accompaniedInput.trim().toLowerCase() === "yes" : false;

// 先校验输入有效性,再执行核心逻辑
if (!isNaN(age) && (age >= 13 || isAccompanied)) {
    console.log("You may see the movie");
} else {
    // 可选:区分无效输入和不符合条件的情况
    if (isNaN(age)) {
        console.log("Please enter a valid age number.");
    } else {
        console.log("You can not see the movie");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:59