我遇到一个问题,当我启动我的机器人并运行此命令时,它的输出为“ undefined”或“ null”。我该如何解决?
我尝试使用与其他所有选项相同的方法。
if (serv.verified == false) {
var veri = "No.";
}
它检查布尔值,字符串或数字的位置。它似乎不起作用。它将我的变量设置为null或未定义。
if (serv.afkChannel == `null`) {
var afk = "No AFK VC.";
}
if (serv.verified == true) {
var veri = "Yes.";
}
if (serv.verified == false) {
var veri = "No.";
}
var myInfo2 = new discord.RichEmbed()
.setAuthor(`${serv.name}'s guild info`)
.addField(`AFK Channel`,`${afk}`,true)
.addField(`AFK Timeout`,`${serv.afkTimeout}s`,true)
.addField(`Channels`,`${serv.channels.size}`,true)
.addField(`Creation of Guild`,`${serv.createdAt}`,true)
.addField(`Default Notification`, defn,true)
预期结果:将显示“无AFK VC” 实际结果:显示未定义或为空。
答案 0 :(得分:0)
首先,您要检查是否存在频道。
然后,您要将变量afk
设置为No AFK Channel。
最后,如果有afk频道,则会说是AFK频道。
if (!serv.afkChannel)
var afk = `No AFK Channel`
else var afk = `${serv.afkChannel}`
“!”基本上使以下代码相反。
下一个代码将发出一个the variable afk is already defined
错误,但基本上是一个“或”。如果没有AFK频道,或者,如果有AFK频道,则。
现在您需要做的就是找出摆脱#号的方法。享受吧!
答案 1 :(得分:0)
除了... 'null'
以外,没有其他内容与文字字符串'null'
相匹配。这只是一个简单的示例:
console.log(null == 'null'); // The identity operator (==) even does type
console.log(undefined == 'null'); // conversions and these aren't the same.
console.log(null == null); // These are both true, because null is not a string.
console.log(undefined == null); // <-- Watch out: this is only true using the twins.
console.log('null' == 'null'); // The only match is the string compared to itself.
如果未定义频道,
Guild.afkChannel
将为undefined
。任何东西都不应返回 string 'null'
。话虽如此,当您将serv.afkChannel
与`null`
进行比较时,布尔值将永远不会为真。由于您的链中没有else
,因此afk
不会被定义。
在声明afk
变量时,可以使用logical OR operator(||
)来替换if
/ else
语句并防止出现问题:< / p>
var afk = serv.afkChannel || 'No AFK Channel';
如果serv.afkChannel
是falsy,则该变量将改为声明为'No AFK Channel'
。