我正在尝试一个奇怪的问题:在代码的开头,我定义了一个函数,如下所示:
function rootEmbed()
{
var embed = new Discord.RichEmbed()
.setColor(config.embedColor);
return embed;
//returns an object
}
稍后在同一文件中,我定义了另一个函数,该函数调用上面的函数,如下所示:
function commandList()
{
var embed = rootEmbed();
//....
}
调用该函数不会导致任何问题,但是调用以下函数会返回一条错误消息,
(node:4988) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: rootEmbed is not a function
以下是告知的功能:
function voidTrader(trader)
{
var rootEmbed = rootEmbed();
//...
}
我无法弄清楚为什么voidTrader()
方法会导致错误,而commandList()
却非常好。我在做什么错了?
如果您需要完整的代码,则可以here找到它。
谢谢!
答案 0 :(得分:2)
这是可变吊装和可变阴影的组合。初始化变量var x = 5
时,会发生var x
提升到代码文件顶部的情况。但是,功能声明更高。这意味着在您的文件运行时,情况就是这样:
function rootEmbed (){//...code here}
var rootEmbed = undefined;
要解决此问题,请更改以下内容:
function voidTrader(trader)
{
var rootEmbed = rootEmbed();
//...
}
对于这样的事情:
function voidTrader(trader)
{
var rootEmbedResult = rootEmbed();
//...
}
答案 1 :(得分:0)
第25-26行还有另一个问题:
var year = "" + stamp.getYear();
var year = twoDigits("20" + year.substr(-2));
year
被var
声明两次。