我正在为Discord创建一个机器人,并试图用NASA API做一些事情。然而,并不是每一张图片都有版权,所以我希望当它发生时,它会用其他东西代替"未定义"。这可能吗?
下面是我的代码:
"nasapic": {
name: "nasapic",
help: "Utilisez cette commande pour afficher l'image du jour sur http:///apod.nasa.gov/",
process: function (bot, msg, suffix) {
request("https://api.nasa.gov/planetary/apod?date="+suffix+"&hd=True&api_key=NNKOjkoul8n1CH18TWA9gwngW1s1SmjESPjNoUFo", function (error, response, body) {
if (!error) {
var nasaPic = JSON.parse(body);
var msgArray = [];
msgArray.push("Photographie du " + nasaPic.date + " prise par " + nasaPic.copyright + "n");
msgArray.push("Titre : **" + nasaPic.title + "**n");
console.log(msg.author.name + " " + "a utilisé la commande /nasapic");
msgArray.push(nasaPic.url);
if (nasaPic.code == 400) {
bot.sendMessage(msg.channel, ":x: Une erreur est survenue. Rappel de la syntaxe : **YYYY-MM-DD**"); }
if (nasaPic.copyright == undefined) {
nasaPic.copyright.replace("undefined", "test");
bot.sendMessage(msg, msgArray); }
else bot.sendMessage(msg, msgArray);
}
});
}
},
下面是有问题的两行:
if (nasaPic.copyright == undefined) {
nasaPic.copyright.replace("undefined", "test");
bot.sendMessage(msg, msgArray); }
谢谢你的帮助。
你似乎在寻找
if (typeof(nasaPic.copyright) == 'undefined') {
nasaPic.copyright = 'test';
}
最简单的方法是:
if (!nasaPic.copyright) {
nasaPic.copyright = "default copyright";
}
唯一的问题是null、undefined或空值将被传递给这个方法。我认为在这种情况下这是更可取的。否则你需要使用typeof.
nasaPic.copyright.replace("undefined", "test");
将不为您工作,因为nasaPic.copyright
是未定义的。因为它是未定义的,所以它将没有可用的.replace
函数。相反,请执行以下操作:
if (!nasaPic.copyright) {
nasaPic.copyright = "test";
...