gpt4 book ai didi

javascript - 方法未定义为函数(虽然定义为函数)

转载 作者:行者123 更新时间:2023-12-01 01:27:59 24 4
gpt4 key购买 nike

我正在尝试一个奇怪的问题:在代码的开头,我定义了一个像这样的函数:

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 .

提前致谢!

最佳答案

这是变量提升和变量阴影的组合。当您初始化变量 var x = 5 时,var x 会被提升到代码文件的顶部。然而,函数声明的提升甚至更高。这意味着当您的文件运行时,会发生以下情况:

function rootEmbed (){//...code here}
var rootEmbed = undefined;

要解决此问题,请更改以下内容:

function voidTrader(trader)
{
var rootEmbed = rootEmbed();
//...
}

对于这样的事情:

function voidTrader(trader)
{
var rootEmbedResult = rootEmbed();
//...
}

关于javascript - 方法未定义为函数(虽然定义为函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53576326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com