function a(sum1,sum2){
   var sum=sum1+sum2;
   alert(sum);
 }
      //请问下面这两个函数的执行方式在内存中创建的方式是不是不一样一个
      //相当于在堆内存中分别new了两个函数对象 (第一种执行方式),而下面那个就是将rs变量指向了a这个函数对象,
      //一次执行完后 这个堆内存中的函数对象清除,然后重新new了一个函数 但是该对象的引用rs中存放的对象在堆内存中的地址是不发生变化的;也就是说这个栈内存始终指向了这个堆内存中的地址,
      //下面那个Gc垃圾回收策略不会将rs这个存放栈内存中的变量在第一次和第二次之间将其清除
 a(1,4);
 a(1,5);
    
 var rs=a;
 rs(1,4);
 rs(1,5);

解决方案 »

  1.   

    内存里只有一个对象,rs和a都指向这个内存地址
      

  2.   

    因为第一个相当于var rs=a(1,4); var rs1=a(1,5);在执行第一个的函数的时候执行流完成,内存进行回收,第二段代码进行执行又new出了一个新的函数对象,因为第一个已经结束了,第二个实际是两个变量指向这个函数对象 但是我在赋值的时候只是给一个对象