2016-08-25 119 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不被定義爲錯誤」消息。嘗試從'forEach'調用中移除'antwoord'參數 –

+1

'antwoord' in'haalScoresOp()'不在範圍內,其本地爲'berekenEindresultaten()' –

+0

@AlexK。我如何將它傳遞給該範圍? – Christoph

回答

2

如果引用antwoordhaalScoresOp的方法是無效/廢話/不好。你引用它就好像它是一個範圍內的變量......好吧,事實並非如此。該函數應該接受它作爲參數就像它的其他參數:

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功能