function a() {abc = function() { alert("bb"); };  var abc = function() { alert("bb1"); };  }
        var gg = new a();
        abc();//出错,未定义我想请问,前面的abc = function() { alert("bb"); };不是定义了一个全局变量吗?为什么却报错未定义呢??请指教!~谢谢~~~
       

解决方案 »

  1.   

    abc = function() { alert("bb"); }是定义了 个全局的
    但是前面加上了个 var 
    就变成了局部了
      

  2.   

    你把abc变量当成了方法使用,所以没有那个方法吧。
      

  3.   

    但不是先定义了一个全局的再定义一个局部的吗??两个ABC不是不一样的吗?
      

  4.   

    函数中声明的所有变量在整个函数中都有定义,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
      
     </HEAD> <BODY>
      <script type="text/javascript">
    var temp="first";
    function test(){
    alert(temp);//显示“undefined”,
    var temp="second";//变量在此处被初始化,但函数内到处都有定义
    alert(temp);
    }
    test();
      </script>
     </BODY>
    </HTML>运行下这个例子,体会一下
      

  5.   

    嗯 4楼说的没错
    我简单说下解析过程    function test(){
            alert(temp);//显示“undefined”,
            var temp="second";//变量在此处被初始化,但函数内到处都有定义
            alert(temp);
        }调用test的时候
    先解析var temp;//但是赋值操作不会提前解析,于是乎这代码成了
    function test() {
      var temp;
      alert(temp);
      temp = "second";
      alert(temp);
    }
    那么既然有了局部变量,他会优先使用全局变量。这个是4楼在解释的过程中给你附带的知识点。