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

这段JavaScript代码无法返回预期TRUE结果,问题出在哪里?

问题分析与修复方案

核心问题点:

  • 数字类型无法调用substring方法
    你把momo_no定义成了数字,而substring是字符串专属方法,数字调用该方法会直接报错。另外以0开头的数字在JavaScript中会被识别为八进制数,但0759933091包含八进制不允许的数字9,会导致解析异常,完全偏离你想要的原始号码。

  • 逻辑判断完全错误
    你使用||(逻辑或)作为判断条件,这意味着只要前缀不等于列表里的任意一个值,条件就会成立,永远都会弹出FALSE。比如当前缀是075时,它肯定不等于070,条件直接为真,执行alert('FALSE'),完全和预期相反。

  • 类型不匹配的比较错误
    就算转成字符串,拿字符串和数字(比如075)比较也有问题——075作为八进制数实际是十进制的61,和字符串'075'比较会出现类型不匹配的错误,必须统一用字符串进行比较。

修复后的代码

方法一(更简洁的集合判断):

// 直接用字符串存储号码,避免数字解析问题
var momo_no = '0759933091';
// 定义允许的前缀列表
var allowedPrefixes = ['075', '070', '074', '077', '078', '076', '039'];
// 判断前缀是否在允许范围内
if (!allowedPrefixes.includes(momo_no.substring(0, 3))) {
  alert('FALSE');
} else {
  alert('TRUE');
}

方法二(调整逻辑运算符):

var momo_no = '0759933091';
var prefix = momo_no.substring(0, 3);
// 把||换成&&,判断前缀是否不属于所有允许值
if (prefix !== '075' && prefix !== '070' && prefix !== '074' && prefix !== '077' && prefix !== '078' && prefix !== '076' && prefix !== '039') {
  alert('FALSE');
} else {
  alert('TRUE');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:42:53