var a=function(){alert(1)};
var b=a;
b=function(){alert(2)};
 a(  );
执行结果为何还是1,函数不是引用类型吗var a=[1,2];
var b=a;
b.push(3)
a[2]变成3,数组这里就比较正常

解决方案 »

  1.   

    楼主的实验是没有错的,先从那个数组的实验说
    如果是
       
         var a=[1,2];//a是指向数组的‘指针’
         var b=a;//此时b也是一个指针指向了数组
         b=[2,3];//注意这不是给数组赋值,这只是将b又重新指向了另外一个数组
         alert(a);//a依旧是指向原数组的指针结果是结果还是[1,2],这就跟楼上上面举得例子差不多一个道理了
      

  2.   

    var a=[1,2];
    var b=a;
    b=[3,4];
    alert(a[1]); 结果是2
    懂乐
    指针指向了别处,而非原来的地方对吧
    而push操作,并未改变指针指向的地址?
      

  3.   

    var b=a; 表示把a的引用给b,完了,你又b=function(){alert(2)},相当于把a的引用给舍弃了,得到了function(){alert(2)}的引用。这和值类型或者引用类型毫无关系。
    如下代码:
    var c=[1,2];
    var d=c;
    d=[3,4];
    alert(c[0]);   //return 1