web-dev-qa-db-ja.com

変数をforeach関数に渡す

こんにちは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);
}
7
Christoph

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));
13
deceze

あなたは単に使うことができます:

opleidingArray.forEach(haalScoresOp, antwoord);

次のようにhaalScoresOp関数内のantwoordを参照してください:

function haalScoresOp(){
    var diantwoord = this.valueOf();
}

antwoordは 'this'オブジェクトとして型に関する関数に渡されます

1
user12387426

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関数内に保持されます

0
kurdtpage