将变量传递给foreach函数

Chr*_*oph 4 javascript variables foreach scope ecmascript-6

嗨,我想传递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);
}
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 9

您在antwoord内部引用的方式haalScoresOp无效/废话/不好。您在引用它时就好像它是作用域中的变量一样……嗯,不是。该函数应像其他参数一样接受它作为参数:

function haalScoresOp(antwoord, item, index) {
  ..
  console.log(antwoord);
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其传递给呼叫方:

opleidingArray.forEach(function (item, index) {
    haalScoresOp(antwoord, item, index)
});
Run Code Online (Sandbox Code Playgroud)

要么:

opleidingArray.forEach(haalScoresOp.bind(null, antwoord));
Run Code Online (Sandbox Code Playgroud)

  • 不过,它们是在周围范围内定义的,因此它们*在*范围内。 (3认同)
  • @Grant 但请不要。 (2认同)