Javascript 方法未定义为函数(定义为函数时)
我正在试验一个奇怪的问题:在我的代码开始时,我定义了这样一个函数:Javascript 方法未定义为函数(定义为函数时),javascript,node.js,function,discord,discord.js,Javascript,Node.js,Function,Discord,Discord.js,我正在试验一个奇怪的问题:在我的代码开始时,我定义了这样一个函数: function rootEmbed() { var embed = new Discord.RichEmbed() .setColor(config.embedColor); return embed; //returns an object } 稍后在同一文件中,我定义了另一个调用上述函数的函数,如下所示: function commandList() { var embed = r
function rootEmbed()
{
var embed = new Discord.RichEmbed()
.setColor(config.embedColor);
return embed;
//returns an object
}
稍后在同一文件中,我定义了另一个调用上述函数的函数,如下所示:
function commandList()
{
var embed = rootEmbed();
//....
}
调用该函数不会导致任何问题,但是调用以下函数会返回一个错误
(节点:4988)未处理的PromisejectionWarning:未处理的承诺拒绝(拒绝id:1):TypeError:rootEmbed不是函数
以下是功能:
function voidTrader(trader)
{
var rootEmbed = rootEmbed();
//...
}
我不明白为什么voidTrader()
方法会导致错误,而commandList()
结果却非常好。我做错了什么
如果你想要完整的代码,你可以找到它
提前谢谢 这是可变提升和可变阴影的组合。初始化变量
var x=5
时,发生的情况是var x
被提升到代码文件的顶部。然而,功能声明被提升得更高。这意味着在运行文件时,会发生以下情况:
function rootEmbed (){//...code here}
var rootEmbed = undefined;
要解决此问题,请更改以下内容:
function voidTrader(trader)
{
var rootEmbed = rootEmbed();
//...
}
对这样的事情:
function voidTrader(trader)
{
var rootEmbedResult = rootEmbed();
//...
}
这是可变提升和可变阴影的组合。初始化变量
var x=5
时,发生的情况是var x
被提升到代码文件的顶部。然而,功能声明被提升得更高。这意味着在运行文件时,会发生以下情况:
function rootEmbed (){//...code here}
var rootEmbed = undefined;
要解决此问题,请更改以下内容:
function voidTrader(trader)
{
var rootEmbed = rootEmbed();
//...
}
对这样的事情:
function voidTrader(trader)
{
var rootEmbedResult = rootEmbed();
//...
}
第25-26行还有一个问题:
var year = "" + stamp.getYear();
var year = twoDigits("20" + year.substr(-2));
year
用var
声明两次。第25-26行还有另一个问题:
var year = "" + stamp.getYear();
var year = twoDigits("20" + year.substr(-2));
year
用var
声明两次。非常感谢。我现在觉得自己很愚蠢。。。这一直是一个变量名的问题!(很乐意帮忙:)非常感谢。我现在觉得自己很愚蠢。。。这一直是一个变量名的问题!(很乐意帮忙:)威尔弗雷德解释得很好。当您将下面的代码移出函数时,您将不会面对它。var rootEmbed=rootEmbed()@威尔弗雷德解释得很好。当您将下面的代码移出函数时,您将不会面对它。var rootEmbed=rootEmbed();