Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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 访问内部回调函数的回调参数_Javascript - Fatal编程技术网

Javascript 访问内部回调函数的回调参数

Javascript 访问内部回调函数的回调参数,javascript,Javascript,我正在努力理解这段代码 a=[1,2,3,4,5]; a、 forEach(i=>{ 设置超时(i=>{ 控制台日志(i); }, 1000); });您的内部回调有一个名为i的参数,它将外部i隐藏起来 setTimeout()不向其回调传递任何参数,因此内部的i是未定义的 要使用外部回调中的参数或变量,只需使用它。您的内部回调有一个名为i的参数,该参数会遮挡外部i setTimeout()不向其回调传递任何参数,因此内部的i是未定义的 要使用外部回调中的参数或变量,只需使用它。只需删除set

我正在努力理解这段代码

a=[1,2,3,4,5];
a、 forEach(i=>{
设置超时(i=>{
控制台日志(i);
}, 1000);

});
您的内部回调有一个名为
i
的参数,它将外部
i
隐藏起来

setTimeout()
不向其回调传递任何参数,因此内部的
i
未定义的


要使用外部回调中的参数或变量,只需使用它。

您的内部回调有一个名为
i
的参数,该参数会遮挡外部
i

setTimeout()
不向其回调传递任何参数,因此内部的
i
未定义的


要使用外部回调中的参数或变量,只需使用它。

只需删除
setTimeout
中的
i

设a=[1,2,3,4,5];
a、 forEach((i)=>{
设置超时(()=>{
控制台日志(i);
}, 1000);

});只需删除
setTimeout
中的
i

设a=[1,2,3,4,5];
a、 forEach((i)=>{
设置超时(()=>{
控制台日志(i);
}, 1000);

});这只是标准的阴影

考虑以下代码:

让x=“外部”;
控制台日志(x);
{
设x=“内部”;
控制台日志(x);
}

控制台日志(x)这只是标准的阴影

考虑以下代码:

让x=“外部”;
控制台日志(x);
{
设x=“内部”;
控制台日志(x);
}

控制台日志(x)另一个选项是使用第三个参数设置超时。在
延迟
之后添加的所有参数将作为参数传递给
设置超时

这是:

此处,
param1、param2
等作为参数传递给
func

a=[1,2,3,4,5];
a、 forEach(i=>{
设置超时(值=>{
console.log(值);
},1000,i);

});另一个选项是使用第三个参数设置超时。在
延迟
之后添加的所有参数将作为参数传递给
设置超时

这是:

此处,
param1、param2
等作为参数传递给
func

a=[1,2,3,4,5];
a、 forEach(i=>{
设置超时(值=>{
console.log(值);
},1000,i);

});setTimeout
i
是对
forEach
i
i
setTimeout
是对
forEach
i
的阴影。聪明的选择,绝对是一个有趣的选择solution@briosheje当然,这应该是公认的答案,你永远都不需要。您总是可以将另一个匿名函数包装起来:
a.forEach(i=>{setTimeout(()=>callback(i),1000);})
。从技术上讲,
setTimeout
的第三个参数是100%冗余的。这是一个聪明的选择,绝对是一个有趣的选择solution@briosheje当然,这应该是公认的答案,你永远都不需要。您总是可以将另一个匿名函数包装起来:
a.forEach(i=>{setTimeout(()=>callback(i),1000);})
。从技术上讲,
setTimeout
的第三个参数是100%冗余的。
setTimeout(func[, delay, param1, param2, ...])