在AJAX中,我们经常都要使用外部变量,经常会多次使用,如下代码
var title = 'blog';
$.post(url, {}, function(data){
alert(title);//output single's blog, 我们期望的是输出 blog
})
title = "single's blog";
$.post(url, {}, function(data){
alert(title);//output single's blog
})
又如代码:
for(var i=0;i<3;i++)
{
$.get('/?'+i, {}, function(data){
alert(i); //我们期待的是按顺序alert(1) alert(2) alert(3),但是实际上三次都是alert
})
}
这均是由于AJAX异步导致的问题,可以轻松使用闭包解决问题
var title = 'blog';
(function(title){
$.post(url, {}, function(data){
alert(title);//output single's blog, 我们期望的是输出 blog
})
}(title))
title = "single's blog";
(function(title){
$.post(url, {}, function(data){
alert(title);//output single's blog
})
}(title))
for(var i=0;i<3;i++)
{
((function(i){
$.get('/?'+i, {}, function(data){
alert(i); // alert(1) alert(2) alert(3)
})
}(i))
}
PS:
(function(){
//code
}()),自执行函数(或匿名函数),详见谷歌或度娘。