Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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 - Fatal编程技术网

Javascript 是否将参数传递给forEach循环内的回调函数?

Javascript 是否将参数传递给forEach循环内的回调函数?,javascript,Javascript,我正在使用客户端JavaScript。我想在forEach循环中运行回调,并将forEach循环中变量的值传递给回调 这是我的(坏的)代码: 当我运行此命令时,会收到一条警告,提示console.log(tag)中的tag未定义 如何将标记的值传递给回调?我相信这很简单 也许您可以使用高阶函数(返回函数的函数): var标签=['foo','bar']; var createDisplayTagCallback=函数(标记){ 返回函数(错误、结果){ 如果(错误){ console.warn(

我正在使用客户端JavaScript。我想在forEach循环中运行回调,并将forEach循环中变量的值传递给回调

这是我的(坏的)代码:

当我运行此命令时,会收到一条警告,提示
console.log(tag)
中的
tag
未定义


如何将标记的值传递给回调?我相信这很简单

也许您可以使用高阶函数(返回函数的函数):

var标签=['foo','bar'];
var createDisplayTagCallback=函数(标记){
返回函数(错误、结果){
如果(错误){
console.warn(“来自服务器的错误”,错误);
}
否则{
控制台日志(标签);
}
}
};
tags.forEach(函数(tag){
if(is_项目){
addTag(可视化标识、标记、createDisplayTagCallback(标记));
}否则{
Page.addTag(Page_id,tag,createDisplayTagCallback(tag));
}
});  

但尚未测试此代码…

您必须在addTag中有一个回调

this.addTag(visualisation_id, tag, callback) {
  callback(error, result)
}
换成

this.addTag(visualisation_id, tag, callback) {
  callback(error, result, tag)
}

displayTag
接收名为
error
results
的参数,参数列表中不包含
tag
。函数体中使用的参数在函数定义的参数列表中命名(声明),而不是在调用函数时命名(声明)。当然-我理解这一点,因为我希望问题能说明这一点!问题是如何将
tag
的值传递给函数。有没有办法,或者我需要在
forEach
中编写两次函数?只需更改change function addTag将标记传递给callback@Richard
displayTag=函数(错误、结果、标记)
-您可以通过这种方式添加参数。假设
.addTag
方法就是这样传递它的。我们不知道它们是做什么的,所以我们唯一能建议的就是“添加参数”-我们不知道如何调用此函数。@BartHofland,在OP告诉我们之前,这是我们不知道的。
addTag
函数似乎是在(外部)类/模块
项目
页面
中定义的。不知道OP是否能改变这些功能。但我同意你的建议非常合理。如果我自己创建了关于标签的功能,我的addTag函数在几个类中,比如
Page
Project
会调用一个回调函数,该回调函数被传递给addTag函数,我也会将受影响的标记作为参数传递给回调函数调用,以防回调函数需要它。Pfff。我讨厌回电话。仅针对您需要编写的复杂解释。;)非常感谢。这就是我最后要做的,因为我可以改变那些函数。
this.addTag(visualisation_id, tag, callback) {
  callback(error, result)
}
this.addTag(visualisation_id, tag, callback) {
  callback(error, result, tag)
}