我尝试了下面的代码,bot不会出错,但是命令只会回复真实的结果,即使args1超出了范围。
这是我试过的代码
if(Number(-10) << parseInt(args[1]) << Number(10)) {
message.channel.send("yes")
} else {
message.channel.send("no")
}我还尝试在10和-10的值上使用-10函数,但同样的问题是,bot只对yes进行回复。
发布于 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,并在其之前进行未定义/长度检查。
例如:
if (args.length >= 2 && -10 < parseInt(args[1]) && parseInt(args[1]) < 10) {
message.channel.send("yes");
} else {
message.channel.send("no");
}发布于 2022-01-22 17:26:14
JS不会像其他语言(如IndexOutOfRange,C# )那样抛出任何错误的C#。
它将返回undefined。
请在下面的片段中了解如何发生这种情况。

如果您的逻辑是检查-10到10之间的值,则必须使用&运算符进行一点更改。
干杯。
https://stackoverflow.com/questions/70815107
复制相似问题