UPDATE
При работе с функциями обратного вызова важно обращать внимание на поток выполнения:
var img = "nice.jpg";
$.post('/path', { key: value }, function(data){
img = "newname.jpg";
});
alert(img); // Alerts "nice.jpg"
Это потому, что любой код, возникающий после обратного вызова (но не в функции обратного вызова), выполняется первым:
- Установите
img
на nice.jpg
- Звоните
$.post
- Звоните
alert
- Установите
img
на newname.jpg
Оригинальный ответ:
Если код, который вы используете, существует в точности так, как вы его разместили, то:
img
уже доступна внутри вашей функции анонимного обратного вызова.
- Да, вы также можете изменить значение
img
внутри функции.
Когда вы объявляете переменную с ключевым словом var
, она является частной по отношению к ее текущей области, но доступна для любых других контекстов, содержащихся в ее области:
РАБОТЫ
function getPost(){
var img = "nice.jpg";
$.post('/path', {key:value}, function(data){
alert(img); // alerts "nice.jpg"
});
}
НЕ РАБОТАЕТ
function changeImage(){
var img = "nice.jpg";
getPost();
}
function getPost(){
$.post('/path', {key:value}, function(data){
alert(img); // img is undefined
});
}