Спасибо за помощь, только разница в том что
var a=function go() {
var test=2;
};
В примере не выполняется пока ее не вызовешь, а в моем случае
img.onload = function(){
desc = true;
}
onload выполнит действие desc=true.
Вообщем так и не понял как в с помощью этой функции изменять значения переменной, видимо onload/onerror выполняются в каком то отдельном контексте.