Javascript 在传递回调时绑定变量
在将回调函数传递给调用方时,如何绑定(或传递值)回调 例如:Javascript 在传递回调时绑定变量,javascript,binding,callback,Javascript,Binding,Callback,在将回调函数传递给调用方时,如何绑定(或传递值)回调 例如: function callbackTest() { for(i=0; i<3; i++){ setTimeout(function(){ console.log("Iteration number ", i); }.bind(i), i*1000); } } callbackTest(); 我希望绑定在回调传递给调用方时发生。但是没有 我该怎么做 在我的
function callbackTest() {
for(i=0; i<3; i++){
setTimeout(function(){
console.log("Iteration number ", i);
}.bind(i), i*1000);
}
}
callbackTest();
我希望绑定在回调传递给调用方时发生。但是没有
我该怎么做
在我的实际应用程序中,调用方将另一个参数传递给我的回调,因此我不能简单地将I作为参数传递
function callbackTest() {
for(i=0; i<3; i++){
setTimeout(function(myParam){
console.log("Iteration number ", i);
}.bind(i), i*1000);
}
}
callbackTest();
函数回调测试(){
对于(i=0;ibind
),当提供单个参数时,设置函数的this
-在您的示例中,函数中的i
根本没有被绑定或更改-它仍然只是使用(全局)i
。应使用bind
的第二个参数,该参数指定给函数的第一个参数,并为函数指定适当的第一个参数,以便使用:
函数回调测试(){
对于(i=0;ibind
),当提供单个参数时,设置函数的this
-在您的示例中,函数中的i
根本没有被绑定或更改-它仍然只是使用(全局)i
。应使用bind
的第二个参数,该参数指定给函数的第一个参数,并为函数指定适当的第一个参数,以便使用:
函数回调测试(){
对于(i=0;iBind从另一个函数创建一个函数,其中一些参数用特定值填充。您的函数不接受任何参数,因此使用bind没有任何意义您的方法不需要绑定,只需使用IIFE传递变量i
@charlietfl,如您所说。尽管我找不到早期的er回答。链接?嗯?不确定你在问什么。如果寻找重复的链接,它位于页面顶部,由systemBind放置。从另一个函数创建一个函数,其中一些参数用特定值填充。你的函数不接受任何参数,所以使用bind没有任何意义。你的方法不需要这样做绑定,只需使用一个iLife来传递变量i
@charlietfl,正如你所说。虽然我找不到更早的答案。链接?嗯?不确定你在问什么。如果寻找重复的链接,它位于页面顶部,由系统放置,或者他可以在函数中使用这个,而不是i
。在这个例子中,什么绑定i
的要点是什么?绑定是完全不必要的,相反,iLife传递变量i
并返回函数更合适。另外,在我的实际应用程序中,调用方传递自己的参数,而我不能传递internalI@WesModeslet
(或const
)绝对是最好的方法,因为它是最清晰、最简单的——如果你需要支持古老的浏览器,就先使用巴别塔(如果你正在半专业地开发一些东西,巴别塔可能已经是你构建过程的一部分)另一个好的选择是避免,因为
循环完全使用数组方法,这将自动为您提供函数范围。或者他可以在函数内部使用此
,而不是i
。在本例中,绑定i
有什么意义?绑定完全没有必要,相反,通过e变量i
和返回函数更合适。另外,在我的实际应用程序中,调用方传递它自己的参数,而我不能传递internalI@WesModeslet
(或const
)绝对是最好的方法,因为它最清晰、最简单——如果您需要支持古代浏览器,只需先使用Babel即可。(如果您正在半专业地开发某些东西,Babel可能已经是构建过程的一部分)另一个好的选择是避免for
循环完全使用数组方法,这将自动为您提供函数范围。
function callbackTest() {
for(i=0; i<3; i++){
setTimeout(function(myParam){
console.log("Iteration number ", i);
}.bind(i), i*1000);
}
}
callbackTest();