我需要在success函数中从循环中访问i
变量。我该怎么做?,我可以把它传递给函数吗?
function save(){
var mods=model.things;
for (i in mods) {
var mod= mods[i];
$.ajax({
url: "duck"
type: "put",
data: JSON.stringify(mod),
success: function(responce_json) {
var j=i;
}
});
}
}
答案 0 :(得分:3)
一种方式:
success: (function(i) { return function(responce_json) {
var j=i;
}})(i)
这使用立即调用函数表达式(IIFE)来创建一个闭包,该闭包将捕获i
的当前值。
很明显,for...in
被许多JavaScript programmers视为不良做法,但如果你需要使用它,你应该至少包括对hasOwnProperty
的检查
答案 1 :(得分:1)
创建另一个function
,将i
作为参数,从而为每次迭代创建本地副本
var f = function(i) {
var mod= mods[i];
$.ajax({
url: "duck"
type: "put",
data: JSON.stringify(mod),
success: function(responce_json) {
var j=i;
}
});
}
for (iter in mods) {
f(iter);
}