我正在使用一个具有以下参数化的函数(无法更改):
my_function(data, callback_function(results, status) {});
我需要向回调函数传递额外的信息,这些信息无法添加到"data"(回调函数使用),"results"或"status"中。具体来说,这些信息是my_function调用所在的for循环计数器。
为了实现这一点,我在callback_function的主体中包含对计数器的引用:
for(var i = 0; i < 10; i++) {
var data = 'cannot modify this data';
my_function(data, function (results, status) { alert(i); });
}
不幸的是,最终值i(在这种情况下为9)被打印了10次。预期行为是打印循环中每个i的值(从0到9)。
动态函数能否访问其作用域内但范围之外的变量?
i
提供的值来定义myfunction
,并尝试稍后调用它 - 这是一个闭包..!!..它正在访问对i
的引用.. - Vivek Chandra