问一个js关于变量作用域的有关问题,

问一个js关于变量作用域的问题,求助!
请先看这样一个代码段

var RowAndColumn="aaaaa";

$.get(url, {type:"getTable",attribute:"RowAndColumn"},function(data)
{
RowAndColumn=data;
});

alert(RowAndColumn+" first ");
alert(RowAndColumn+" second");


其中RowAndColumn这个变量只在这里定义,使用过;连续两个alert语句展示出了两个完全不同的结果,第一个alert显示aaaaa,而第二个alert显示的是get语句里面data的值,而我想要的正是第二个alert的结果,为什么会出现这样的情况?
------解决思路----------------------
ajax异步执行还没执行到 RowAndColumn=data;就先执行alert
改成同步的或放回调里

var RowAndColumn="aaaaa";
 
    $.get(url,    {type:"getTable",attribute:"RowAndColumn"},function(data)
    {
        RowAndColumn=data;
    alert(RowAndColumn+" first ");
    alert(RowAndColumn+" second");
    });
 



var RowAndColumn="aaaaa";
$.ajax({ 
       url: url, 
       async:false, 
data:{type:"getTable",attribute:"RowAndColumn"},
         success:function(data)   {
        RowAndColumn=data;
    }
});
    alert(RowAndColumn+" first ");
    alert(RowAndColumn+" second");

------解决思路----------------------
$.get()在默认情况下是异步执行的,也就是说程序不会等待function(data){RowAndColumn=data;}执行完再执行alert(RowAndColumn+" first ");
它会先执行alert(RowAndColumn+" first ");弹出aaaaa的对话框,
对话框从弹出到用户让其关闭肯定要一定的时间,这段时间function(data){RowAndColumn=data;}就应该执行完了,之后再执行alert(RowAndColumn+" second");时就有了新的值。

解决方法是

var RowAndColumn="aaaaa";

$.get(url, {type:"getTable",attribute:"RowAndColumn"},function(data)
{
RowAndColumn=data;
cst();
});

function cst()
{
alert(RowAndColumn);
}

或者$.get()改成同步的方法,