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

如何在if条件中比较数字?代码直接用0704比较失效问题咨询

问题分析与解决方案

你的数字比较方式确实存在两个关键错误:

  1. 以0开头的数字字面量会被解析为八进制数
    在JavaScript里,旧版语法中以0开头的数字会被当作八进制处理,0704转成十进制是452,这和你实际想要的PIN码0704完全不是同一个值——哪怕用户输入0704,也不可能和452匹配。

  2. prompt返回的是字符串类型
    用户通过prompt输入的内容,不管输入的是数字还是字母,都会以字符串形式返回。你拿字符串和数字直接用!==比较,因为类型不同,结果永远是true,所以永远走错误分支。

为什么换成字符串就正常?

当你把PIN设为字符串"0704",同时将输入和这个字符串比较时,会精确匹配每一位字符(包括前导零),而且类型一致,自然能正确判断是否匹配。

修正后的代码示例

推荐的字符串方案(保留前导零,符合PIN码场景)

let pin = "0704";
let count = 0;
for (let i = 1; i <= 4; i++) {
    let input = prompt('please make a guess');
    if (input !== pin ) {
        console.log('Sorry that was wrong');
        count++;
    } else {
        console.log('That was correct!')
        break;
    }
}

数字方案(仅适用于不需要前导零的场景)

如果你的PIN不需要前导零(比如实际是704),可以这样写:

let pin = 704;
let count = 0;
for (let i = 1; i <= 4; i++) {
    let input = prompt('please make a guess');
    // 将输入转为十进制数字
    let inputNum = parseInt(input, 10);
    if (inputNum !== pin ) {
        console.log('Sorry that was wrong');
        count++;
    } else {
        console.log('That was correct!')
        break;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:20:43