如何在函数内编写函数?

时间:2016-03-28 21:48:08

标签: javascript

是否可以在JavaScript中的主函数中嵌套函数?我一直在玩一些代码,我无法让我的功能在屏幕上显示任何内容。

function main() {
    var crew;
    var crewMemberWeight = 113;
    var winterWeight = 2.8;
    var winter = false;
    var capacity = 24000;
    var cargo = [1000, 5500, 2000, 3500, 4000, 7000];

    function cargoWeight(cargo) {
        total = 0;
        for(var i = 0; i < cargo.length; i++) {
            total += cargo[i];
        }
        document.write("Cargo weight: " + total);
        return total;
    }
}

main();

6 个答案:

答案 0 :(得分:2)

function main() {
    var crew;
    var crewMemberWeight = 113;
    var winterWeight = 2.8;
    var winter = false;
    var capacity = 24000;
    var cargo = [1000, 5500, 2000, 3500, 4000, 7000];

    function cargoWeight(cargo) {
        total = 0;
        for(var i = 0; i < cargo.length; i++) {
            total += cargo[i];
        }
        document.write("Cargo weight: " + total);
        return total;
    }

    // you have to call the function and pass in cargo. Not just define it
    cargoWeight(cargo)
}

main();

答案 1 :(得分:0)

你只需要在main()中调用这个内部函数。我愿意:货物重量(货物);在最后一个括号之前。

答案 2 :(得分:0)

您需要在最后调用cargoWeight功能。查看您的代码,看起来您想要传递货物变量。

function main() {
var crew;
var crewMemberWeight = 113;
var winterWeight = 2.8;
var winter = false;
var capacity = 24000;
var cargo = [1000, 5500, 2000, 3500, 4000, 7000];

function cargoWeight(load) {
    total = 0;
    for(var i = 0; i < load.length; i++) {
        total += load[i];
    }
    document.write("Cargo weight: " + total);
    return total;
}
cargoWeight(cargo);
}

main();

答案 3 :(得分:0)

可以在javascript中定义函数内的函数。但是,当您这样做时,只能从父函数内部调用该嵌套函数。因此,如果您编写了另一个单独的函数,则无法从该函数调用cargoWeight()

function main() {
    var crew;
    var crewMemberWeight = 113;
    var winterWeight = 2.8;
    var winter = false;
    var capacity = 24000;
    var cargo = [1000, 5500, 2000, 3500, 4000, 7000];

    function cargoWeight(load) {
        total = 0;
        for(var i = 0; i < load.length; i++) {
            total += load[i];
        }
        document.write("Cargo weight: " + total);
        return total;
    }
}

main();

function other(){
    cargoWeight(400)  // can't call this method here
}

有很多应用程序需要一个冗长的帖子来解释,但是查看javascript对象和闭包将是一个很好的起点,以便了解javascript为何以及如何以这种方式工作。

答案 4 :(得分:0)

首先你需要调用'cargoWeight(load)'你还需要定义将被拉入函数的'load'。

我认为您的意图是加载'货物'阵列? 看到联系小提琴:

www.jsfiddle.net/natLuuy6

答案 5 :(得分:-1)

派对已经很晚了,但对于初学者来说可能会很有趣#34;

function main()
{
    var crew;
    var crewMemberWeight = 113;
    var winterWeight = 2.8;
    var winter = false;
    var capacity = 24000;
    var cargo = [1000, 5500, 2000, 3500, 4000, 7000];

    function cargoWeight(cargoValues) {
        return cargoValues.reduce((a, b) => a + b, 0);
    }

    document.write("Cargo weight: ", cargoWeight(cargo));
}

main();