2016-08-25 2 views
1

Привет Я хочу, чтобы передать antwoord впередать переменную Foreach функцию

opleidingArray.forEach (haalScoresOp, antwoord);

Так что я могу использовать его в функции

HaalScoresOp

. Я не могу заставить это работать. Я также пытался привязать, но это не работает.

Я получаю antwoord не определяется как ошибка.

var antwoordenPerVraag = [2,1,3]; 

console.log(VragenEnScores.vragen[0].opleidingen[0]); 


antwoordenPerVraag.forEach(berekenEindresultaten); 

function berekenEindresultaten(item, index) { 
    var opleidingArray = VragenEnScores.vragen[index].opleidingen; 

    var antwoord = "bla"; 

    opleidingArray.forEach(haalScoresOp, antwoord); 
    // score nog doorgeven aan haalscores op = het item 
} 

function haalScoresOp(item, index) { 
    console.log("haal score op voor"); 
    console.log(item.naam); 
    console.log(item.scores); 

    console.log("haal antwoord op"); 
    console.log(antwoord); 
} 
+0

Где вы звоните 'opleidingArray.forEach (haalScoresOp, antwoord);', вы передаете в 'antwoord' переменной в качестве параметра - это просто «строка», поэтому ваше сообщение «antwoord is not defined as error». Попробуйте удалить параметр 'antwoord' из вызова' forEach' –

+1

'antwoord' в' haalScoresOp() 'не находится в области видимости, его локальный параметр' berekenEindresultaten() ' –

+0

@AlexK. как передать его в эту область? – Christoph

ответ

2

Путь вы ссылки antwoord внутри haalScoresOp недействителен/нонсенс/не хорошо. Вы ссылаетесь на него так, как будто это переменная в области ... ну, это не так. Функция должна принять его в качестве параметра, как и другие его параметры:

function haalScoresOp(antwoord, item, index) { 
    .. 
    console.log(antwoord); 
} 

Затем вы можете передать его в на стороне вызывающего абонента:

opleidingArray.forEach(function (item, index) { 
    haalScoresOp(antwoord, item, index) 
}); 

или:

opleidingArray.forEach(haalScoresOp.bind(null, antwoord)); 
+0

Я попробовал привязку, и это работает. – Christoph

0

Вы можете изменить функция haalScoresOp является анонимной функцией внутри функции berekenEindresultaten:

var antwoordenPerVraag = [2,1,3]; 

console.log(VragenEnScores.vragen[0].opleidingen[0]); 

antwoordenPerVraag.forEach(berekenEindresultaten); 

function berekenEindresultaten(item, index) { 
    var opleidingArray = VragenEnScores.vragen[index].opleidingen; 

    var antwoord = "bla"; 

    opleidingArray.forEach(function(item, index){ 
    // score nog doorgeven aan haalscores op = het item 
    console.log("haal score op voor"); 
    console.log(item.naam); 
    console.log(item.scores); 

    console.log("haal antwoord op"); 
    console.log(antwoord); 
    }); 

} 

Это будет держать объем переменной antwoord внутри berekenEindresultaten функции

Смежные вопросы