为什么我的函数返回未定义? JS

时间:2018-10-06 13:34:04

标签: javascript function undefined

在使用javascript时,我有点菜鸟,但是我似乎无法找到返回“未定义”的原因

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 :(得分:2)

您要在初始化变量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";
}();