请问一个关于闭包的写法
请教一个关于闭包的写法
for (var j = 1; j <= 5; j++)
{
var l = j;
$.ajax({
url: "/Markets/AjaxTransactionTips/?CommodityID=" + l,
type: "GET",
cache: false,
error: function (Text, Status)
{
console.error(j, l);
});
}
如上代码,当error回调函数被调用时,无论是循环变量还是复制到本地的变量都已经变了(c#中复制到本地的变量l不会变),如果我想在error回调函数中知道是哪个循环变量出的问题,要怎么改写上边代码呢?
------解决思路----------------------
for (var j = 1; j <= 5; j++)
{
var l = j;
$.ajax({
url: "/Markets/AjaxTransactionTips/?CommodityID=" + l,
type: "GET",
cache: false,
error: function (Text, Status)
{
console.error(j, l);
});
}
如上代码,当error回调函数被调用时,无论是循环变量还是复制到本地的变量都已经变了(c#中复制到本地的变量l不会变),如果我想在error回调函数中知道是哪个循环变量出的问题,要怎么改写上边代码呢?
------解决思路----------------------
for (var j = 1; j <= 5; j++)
{
$.ajax({
url: "/Markets/AjaxTransactionTips/?CommodityID=" + j,
type: "GET",
cache: false,
error: (function (l){
return function (Text, Status)
{
console.error(l);
}
})(j)
});
}