首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查args[1]是否在一个数字范围内

如何检查args[1]是否在一个数字范围内
EN

Stack Overflow用户
提问于 2022-01-22 17:01:40
回答 2查看 29关注 0票数 1

我尝试了下面的代码,bot不会出错,但是命令只会回复真实的结果,即使args1超出了范围。

这是我试过的代码

代码语言:javascript
复制
    if(Number(-10) << parseInt(args[1]) << Number(10)) {
        message.channel.send("yes")
    } else {
        message.channel.send("no")
    }

我还尝试在10-10的值上使用-10函数,但同样的问题是,bot只对yes进行回复。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-22 17:34:06

与Python不同,您不能在同一“代码块”中进行2次比较。

代码1 < 2 < 3实际上是在执行(1 < 2) < 3,这实际上是true < 3,而当JS使用false=0,true=1时,您现在检查的是1< 3,而不是2。

因此,在您的情况下,它总是返回true,因为false(0)或true(1)都小于10。

只需将其更改为-10 < parseInt(args[1]) && parseInt(args[1]) < 10,并在其之前进行未定义/长度检查。

例如:

代码语言:javascript
复制
if (args.length >= 2 && -10 < parseInt(args[1]) && parseInt(args[1]) < 10) {
    message.channel.send("yes");
} else {
    message.channel.send("no");
}
票数 3
EN

Stack Overflow用户

发布于 2022-01-22 17:26:14

JS不会像其他语言(如IndexOutOfRange,C# )那样抛出任何错误的C#。

它将返回undefined

请在下面的片段中了解如何发生这种情况。

如果您的逻辑是检查-10到10之间的值,则必须使用&运算符进行一点更改。

干杯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70815107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档