Почему моя функция возвращает неопределенное значение?JS - PullRequest
0 голосов
/ 06 октября 2018

Я немного нуб, когда дело доходит до javascript, но я не могу найти причину, почему это возвращает "undefined"

mineOre(userData.pickaxe, playerData.questid);

    var newOre = new function () {
        var chance = Math.floor(Math.random() * 100);
        //console.log(chance);
        /*
        20% Iron
        30% Coal
        5% Diamond
        3% Emerald
        1% Brandons Hair
        41% Stone
        */
        if (chance < 20) {
            return "Iron";
        } else if (chance < 50) {
            return "Coal";
        } else if (chance < 55) {
            return "Diamond";
        } else if (chance < 58) {
            return "Emerald";
        } else if (chance < 59) {
            return "BrandonsHair";
        } else return "Stone";
    }


    function mineOre(pickaxe, questid) {
        console.log(newOre);
    }

1 Ответ

0 голосов
/ 06 октября 2018

Вы делаете вызов mineOre() до , переменная newOre инициализируется.Если вы переместите вызов mineOre() после этой инициализации, то увидите, что newOre - пустой объект.Это объект, а не одна из этих строк, потому что ваш код вызывает эту анонимную функцию с new.

Если вам нужно, чтобы newOre была одной из этих строк, избавьтесь от new идобавить скобки после закрытия } функции:

 var newOre = function () {
    var chance = Math.floor(Math.random() * 100);
    //console.log(chance);
    /*
    20% Iron
    30% Coal
    5% Diamond
    3% Emerald
    1% Brandons Hair
    41% Stone
    */
    if (chance < 20) {
        return "Iron";
    } else if (chance < 50) {
        return "Coal";
    } else if (chance < 55) {
        return "Diamond";
    } else if (chance < 58) {
        return "Emerald";
    } else if (chance < 59) {
        return "BrandonsHair";
    } else return "Stone";
}();
...