Метод не определен как функция (хотя и определен как единица) - PullRequest
0 голосов
/ 02 декабря 2018

Я экспериментирую со странной проблемой: в начале своего кода я определил функцию следующим образом:

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() получается прекрасно.Что я делаю не так?

Если вам нужен полный код, вы можете найти его здесь .

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Есть еще одна проблема в строках 25-26:

var year = "" + stamp.getYear();
var year = twoDigits("20" + year.substr(-2));

year объявляется с var дважды.

0 голосов
/ 02 декабря 2018

Это комбинация переменного подъема и переменного затенения.Когда вы инициализируете переменную var x = 5, происходит то, что var x поднимается в начало файла кода.Однако декларации функции поднимаются еще выше.Это означает, что при запуске файла происходит следующее:

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

Чтобы устранить эту проблему, измените это:

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

на что-то вроде этого:

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