var nextTaskName= null;
        var getNextTaskName = function(z){
           nextTaskName =z  
        alert(nextTaskName); //1
        }     
        alert(nextTaskName);//2

解决方案 »

  1.   

    我是从 Ext.Ajax.request中的调出的参数
      

  2.   

    2不在其作用域内,当然输出为null了。。
      

  3.   


     nextTaskName =z    这个只作用于function里面 
      在外面还是nextTaskName= null;
      

  4.   

    var nextTaskName= null;
      var getNextTaskName =cc(z)
      alert(nextTaskName);//2function cc(z){
      nextTaskName =z   //这个不是上面的 nextTaskName
      alert(nextTaskName); //1
     }   
      

  5.   

    我知道什么原因了,主要是因为 Ext.Ajax.request是异步传输,当加载s时,request的请求的值还没到达而先运行了alert(),所以直接打印出null;只有加载完后才不为空。
      

  6.   

    大家关于作用域的问题,我的是没有问题的主要,在function里面我没用用 var nextTaskName =z,而是nextTaskName =z ,大家请对比下这两者的区别。   还有看看js闭包的概念
      

  7.   

    呃 刚刚没看清楚,不是作用域问题
    但两个地方不是顺序执行的这是肯定的,所以很简单,分析代码执行的顺序就明白为什么两个地方值不同了
    第二个alert时函数没有调用很明显var nextTaskName= null;
      var getNextTaskName = function(z){
      nextTaskName =z   
      alert(1+","+nextTaskName); //1
      }   
      alert(2+","+nextTaskName);//2
    这样写,你马上就知道哪个先执行了