Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量传递给foreach函数_Javascript_Variables_Foreach_Scope_Ecmascript 6 - Fatal编程技术网

Javascript 将变量传递给foreach函数

Javascript 将变量传递给foreach函数,javascript,variables,foreach,scope,ecmascript-6,Javascript,Variables,Foreach,Scope,Ecmascript 6,嗨,我想把antwoord的密码传给 forEach(haalScoresOp,antwoord) 这样我就可以在未来使用它了 哈尔斯科雷索普酒店 功能。我不能让它工作。我也尝试过绑定,但它不起作用 我发现antwoord不是一个错误 var antwoordenPerVraag = [2,1,3]; console.log(VragenEnScores.vragen[0].opleidingen[0]); antwoordenPerVraag.forEach(berekenEindres

嗨,我想把antwoord的密码传给

forEach(haalScoresOp,antwoord)

这样我就可以在未来使用它了

哈尔斯科雷索普酒店

功能。我不能让它工作。我也尝试过绑定,但它不起作用

我发现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);
}

您在
haalScoresOp
内部引用
antwoord
的方式无效/无意义/不好。您正在引用它,就好像它是范围中的一个变量……嗯,它不是。函数应接受它作为参数,就像它的其他参数一样:

function haalScoresOp(antwoord, item, index) {
  ..
  console.log(antwoord);
}
然后,您可以将其传递到呼叫方:

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


您可以将
haalScoresOp
函数更改为
berekeneindersultaten
函数中的匿名函数:

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
函数中,您可以简单地使用:

opleidingArray.forEach(haalScoresOp, antwoord);
并参考haalScoresOp功能中的antwoord,如下所示:

function haalScoresOp(){
    var diantwoord = this.valueOf();
}
antwoord作为“this”对象传递给与类型相关的函数

您可以使用
forEach
的第二个参数传递包含任意多个参数的对象:

const antwoordenPerVraag=[2,1,3];
//用于测试代码的虚拟'VragenEnScores'变量:
常数VragenEnScores={
弗拉根:[
{opleidingen:[{naam:“A”,分数:1}]},
{opleidingen:[{naam:“B”,分数:2}]},
{opleidingen:[{naam:C,得分:3}]}
]
}
antwoordenPerVraag.forEach(berekenEindresultaten);
功能BerekeneIndersUltaten(项目、索引){
常量opleidingArray=VragenEnScores.vragen[index].opleidingen;
const antwoord=“bla”;
//我们将传递一个对象作为forEach的第二个参数
//其中包含自定义属性和值
forEach(haalScoresOp,{antwoord:antwoord,额外:“Yey!”});
}
功能haalScoresOp(项目、索引){
控制台日志(“haal score op voor”);
控制台日志(项naam);
控制台日志(项目分数);
控制台日志(“haal antwoord op”);
console.log(“antwoord:,this.antwoord);//=>“bla”
console.log(“extra:,this.extra);//=>“Yey!”
}

一个简单、不臃肿的示例更容易理解该概念:

const list=[11,22,33];
列表.forEach(
//forEach的第一个参数:callback
函数(值){
console.log(值);
console.log(this.extra参数);
},
//forEach的第二个参数:thisArg
{extraParameter:“extra”}
)

您呼叫的位置
opleidingArray.forEach(haalScoresOp,antwoord)
,您正在将
antwoord
变量作为参数传递-这只是一个
字符串
,因此您的“antwoord未定义为错误”消息。尝试从
haalScoresOp()
中的
forEach
调用
antwoord
中删除
antwoord
参数不在范围内,它位于
berekeneindersultaten()
@AlexK。我如何将其传递到该范围?“我还尝试了绑定”-这应该可以工作<代码>变量参数={antwoord:“bla”}然后是
.forEach(haalScoresOp.bind(params))
,然后是函数中的
this.antwoord
。@nnnnnn这似乎可行!在forEach()中引用haalScoresOp(antwoord、item、index)的方式无效/无意义/不好。您正在引用它,就好像它是范围中的一个变量一样,但haalScoresOp和antwoord不是在forEach()中定义的,而是在周围的范围中定义的,所以它们在范围中。
function haalScoresOp(){
    var diantwoord = this.valueOf();
}