很明显楼主还没有真正理解javascript异步回调函数的过程。
在执行getData函数的时候首先调用ajax函数,ajax函数则给onreadystatechange事件注册(注意是注册,并没有执行)了一个方法,紧接着alert(temp)(此时temp还没被修改,还是10);
然后:ajax收到返回信息,触发onreadystatechange事件,执行之前注册的函数,才修改了temp的值,alert出修改后的temp
所以前一个alert(temp)弹出的是5,后一个alert(temp)弹出的是10。