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

JavaScript实现禁言命令时长度判断分支逻辑异常问题求助

问题原因

你代码中的长度判断语句用错了运算符:=是赋值运算符,不是相等比较运算符。

  • 当执行if(args[0].length = 3)时,代码会直接把args[0].length赋值为3,赋值运算的返回值就是被赋值的3,转换为布尔值为true,所以这个判断永远成立,自然永远走长度为3的分支,不会触发后续的else if判断。

修复方案

把所有判断语句里的=替换为严格相等运算符===即可,修改后的代码如下:

if(args[0].length >= 4) {
  return msg.reply("Please use abbreviated time formats! **m**, **h**, **d**, **w**")
}
var data = args[0]
if(args[0].length === 3) {
  data = data.substr(0, 2) + " " + data.substr(2, 3);
  msg.channel.send(data);
}
else if(data.length === 2) {
  data = data.substr(0, 1) + " " + data.substr(1, 2);
  msg.channel.send(data);
  msg.channel.send("test")
}

额外优化建议

  • 建议补充长度为1的异常输入处理分支,避免出现输入非法时无响应的问题
  • substr方法第二个参数是截取长度,你在长度为3的字符串里调用substr(2,3)和直接调用substr(2)效果完全一致,可以简化写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:45:06