您好我希望将antwoord
传递给
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 :(得分:7)
您在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));
答案 1 :(得分:1)
您可以简单地使用:
opleidingArray.forEach(haalScoresOp, antwoord);
并参考haalScoresOp函数中的antwoord,如下所示:
function haalScoresOp(){
var diantwoord = this.valueOf();
}
antwoord作为“ this”对象传递给有关类型的函数
答案 2 :(得分: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
函数
答案 3 :(得分:0)
您可以使用 forEach
的第二个 thisArg 参数来传递具有任意数量参数的对象:
const antwoordenPerVraag = [2,1,3];
// Dummy `VragenEnScores` variable to test the code:
const VragenEnScores = {
vragen: [
{ opleidingen: [{ naam: "A", scores: 1 }] },
{ opleidingen: [{ naam: "B", scores: 2 }] },
{ opleidingen: [{ naam: "C", scores: 3 }] }
]
}
antwoordenPerVraag.forEach(berekenEindresultaten);
function berekenEindresultaten(item, index) {
const opleidingArray = VragenEnScores.vragen[index].opleidingen;
const antwoord = "bla";
// We are going to pass an object as the 2nd argument to forEach
// which contains custom properties and values
opleidingArray.forEach(haalScoresOp, { antwoord: antwoord, extra: "Yey!" });
}
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: ", this.antwoord); //=> "bla"
console.log("extra: ", this.extra); //=> "Yey!"
}
一个更简单的例子,可以更容易地理解这个概念:
const list = [ 11, 22, 33 ];
list.forEach(
// 1st Argument to forEach: callback
function( value ){
console.log( value );
console.log( this.extraParameter );
},
// 2nd Argument to forEach: thisArg
{ extraParameter: "extra" }
)