2016-03-28 3 views
0

Можно ли встраивать функции в основную функцию в 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(); 
+9

Вы не называете «грузовой вес» в любом месте. –

+0

О, хорошо. Я думал, что, если я позвоню своей главной функции ниже, функции внутри нее также можно назвать. – Nick

+1

Даже если это было так, ваша функция принимает аргумент «load», который не определен нигде, поэтому он будет терпеть неудачу. –

ответ

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(); 
0

Вам просто нужно вызвать эту внутреннюю функцию внутри main(). Я бы сделал: cargoWeight (груз); перед последней скобкой.

0

Вам нужно вызвать функцию loadWeight в конце. Глядя на ваш код выглядит, как вы хотите передать переменную груза в.

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(); 
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 работает таким образом.

0

Прежде всего вам нужно позвонить 'cargoWeight (load)', вам также необходимо определить «нагрузку», которая будет втягиваться в функцию.

Что я думаю, ваше намерение состояло в том, чтобы добавить массив «груза»? см связаны скрипка:

www.jsfiddle.net/natLuuy6

-1

Это поздно к партии, но может быть интересно «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(cargoValues) { 
     return cargoValues.reduce((a, b) => a + b, 0); 
    } 

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

main(); 
Смежные вопросы