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

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;i
bind
),当提供单个参数时,设置函数的
this
-在您的示例中,函数中的
i
根本没有被绑定或更改-它仍然只是使用(全局)
i
。应使用
bind
的第二个参数,该参数指定给函数的第一个参数,并为函数指定适当的第一个参数,以便使用:

函数回调测试(){

对于(i=0;i
bind
),当提供单个参数时,设置函数的
this
-在您的示例中,函数中的
i
根本没有被绑定或更改-它仍然只是使用(全局)
i
。应使用
bind
的第二个参数,该参数指定给函数的第一个参数,并为函数指定适当的第一个参数,以便使用:

函数回调测试(){

对于(i=0;iBind从另一个函数创建一个函数,其中一些参数用特定值填充。您的函数不接受任何参数,因此使用bind没有任何意义您的方法不需要绑定,只需使用IIFE传递变量
i
@charlietfl,如您所说。尽管我找不到早期的er回答。链接?嗯?不确定你在问什么。如果寻找重复的链接,它位于页面顶部,由systemBind放置。从另一个函数创建一个函数,其中一些参数用特定值填充。你的函数不接受任何参数,所以使用bind没有任何意义。你的方法不需要这样做绑定,只需使用一个iLife来传递变量
i
@charlietfl,正如你所说。虽然我找不到更早的答案。链接?嗯?不确定你在问什么。如果寻找重复的链接,它位于页面顶部,由系统放置,或者他可以在函数中使用
这个
,而不是
i
。在这个例子中,什么绑定
i
的要点是什么?绑定是完全不必要的,相反,iLife传递变量
i
并返回函数更合适。另外,在我的实际应用程序中,调用方传递自己的参数,而我不能传递internalI@WesModes
let
(或
const
)绝对是最好的方法,因为它是最清晰、最简单的——如果你需要支持古老的浏览器,就先使用巴别塔(如果你正在半专业地开发一些东西,巴别塔可能已经是你构建过程的一部分)另一个好的选择是避免
,因为
循环完全使用数组方法,这将自动为您提供函数范围。或者他可以在函数内部使用
,而不是
i
。在本例中,绑定
i
有什么意义?绑定完全没有必要,相反,通过e变量
i
和返回函数更合适。另外,在我的实际应用程序中,调用方传递它自己的参数,而我不能传递internalI@WesModes
let
(或
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();