Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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,我有一种情况,我正在使用一个具有绑定功能的包/插件 我用一个代码调用bind,这是myevents触发回调时的过滤器。在这个senario中,将对bind进行三次调用,一次调用参数“t1”,第二次调用参数“t2”,第三次调用参数“t3” 当从myevents对象触发事件时,将使用数据参数调用回调(取决于代码) 我的问题是在调用回调函数时,我需要知道循环最初绑定时的索引号。例如,我在alert语句中有I变量,但我不知道如何在那里获取值,以便在回调最终启动时保存 似乎会有一些“函数(数据,i)”的组

我有一种情况,我正在使用一个具有绑定功能的包/插件

我用一个代码调用bind,这是myevents触发回调时的过滤器。在这个senario中,将对bind进行三次调用,一次调用参数“t1”,第二次调用参数“t2”,第三次调用参数“t3”

当从myevents对象触发事件时,将使用数据参数调用回调(取决于代码)

我的问题是在调用回调函数时,我需要知道循环最初绑定时的索引号。例如,我在alert语句中有I变量,但我不知道如何在那里获取值,以便在回调最终启动时保存

似乎会有一些“函数(数据,i)”的组合来实现这一点

bindList = array('t1','t2','t3');

for (var i = 0; i < bindList.length; i++) {
        myevents.bind(bindList[i], function(data) {
            alert('data arrive on item ' + i + ': ' + data);
        });
    }
bindList=array('t1','t2','t3');
对于(变量i=0;i
我将感谢任何帮助。
谢谢。

使用闭包。由于JS变量是“函数作用域”,因此0处的
i
在迭代中的任何点都引用相同的
i
。我们需要为每个迭代创建一个范围,以便绑定代码引用闭包的
i
,而不是循环的
i

for (var i = 0; i < bindList.length; i++) {
  (function(i){
    myevents.bind(bindList[i], function(data) {
      alert('data arrive on item ' + i + ': ' + data);
    });
  }(i));
}
for(变量i=0;i
只是一个小小的解释:在原始代码中,i
指的是外部变量,因此在执行回调时,循环完成,所有回调将使用相同的值
bindList.length
。谢谢!约瑟夫和沃尔的回答很好。试过这个,效果很好。很容易。。。太滑了!谢谢