var a='xx';
function c()
{
    alert(a);  //奇怪的地方这里打印undefined
    var a=0;
    alert(a);
}
c();     //打印undefined 0  
alert(a);//打印xxvar scope = "global";    
var f1 = function(){   
    alert(scope);    //打印 global  奇怪的地方这可以打印global
    alert(window.scope);  //打印 global  
      
}  
f1();  
alert(scope);//打印global其他的问题  我在代码注释上面标识的问题

解决方案 »

  1.   

    我的问题跟你差不多哦   
    function Start() {
               var jsonStr="";
               jQuery.ajax({
                   type: "post",
                   url: "products.aspx/zhuanhuan",
                   contentType: "application/json; charset=utf-8",
                   dataType: "json",
                   dataFilter: function (data) {
                       jsonStr = data;
                       alert(jsonStr);  //打印出返回值
                   },
               });
               alert(jsonStr);//打印出空  
                 search_content_array =jsonStr; //这里在引用的时候还是空   
                 load_html_start(1);
                 
           }而且还是先打印的下面的alert
      

  2.   


    function c()
    {
        alert(a);  //奇怪的地方这里打印undefined
        var a=0;
        alert(a);
    }javascript在解析函数的时候,var定义会被先执行,上面的代码相当于function c()
    {
        var a;
        alert(a);  //奇怪的地方这里打印undefined
        a=0;
        alert(a);
    }
      

  3.   

    JS 在执行前会进行类似"预编译"的操作。
    发现在函数C里面定义了a,那么就不会到全局里面找,alert(a);  自然就是未定义的。
      

  4.   


    <script>
    function a()
    {
        var c=function()
        {
            var b='a';
            this.b='c';//
        }
        var c=new c();
        this.c=c;
        
    }
    var a=new a();
    alert(a.c.b);
    </script>ls自己去了解吧
      

  5.   

    <script>
    var a='xx';
    function c()
    {
        alert(a);  //奇怪的地方这里打印undefined(因为本函数中从新定义了a,并且是在下面)
        var a=0;
        alert(a);
    }
    c();var scope = "global";    
    var f1 = function(){   
        alert(scope);    //打印 global  奇怪的地方这可以打印global(本函数中没有重新定义scope)
        alert(window.scope);  //打印 global  
          
    }  
    f1();  </script>
      

  6.   

    3楼问题的答案
    <script>
    function a()
    {
        var c=function()
        {
            return 'c';
        }
        return c();
    }
    alert(a());
    </script>