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, ...])