<script>
tTimer = setInterval( text,100 ); 
function text()
{
  var t = "abcdefg";
  delete t;}
<script>比如有上面的一段代码,请问总是在定义var t,例如我执行的次数过多,会不会占用内存,delete t 是否能销毁t
我在运用一段类似的代码时,发现任务管理器的CPU及内存占用一直在直线上升

解决方案 »

  1.   

    delete不是这样用的吧,delete只是删除一个对象的属性或从数组中一个元素
    上面代码如果没有关闭浏览器内存就会一直添加t对象,当然内存会上升了
      

  2.   

    是这样的, 会不断的定义t变量遇到这种情况, 可以手动清楚内存, 将其释放function(){
       var t = "aaa";
    ....
    ....
    ....
       t = null;
    }
      

  3.   

    介绍你看这样一篇文章: http://tech.idv2.com/2008/01/09/javascript-variables-and-delete-operator/之所以这里的 t 没有能够被及时回收,有几个注意点: 1. delete 删除的是引用,并没有删除对象
    2. delete 不能够删除直接用 var 声明的变量
    3. 在这里你的 t 是值类型的,因为 t instanceof Object 是返回的 false  (delete 针对对象的引用) t = null 同 delete 一样,根本不能够解决问题。不同的浏览器有不同的对象回收机制,
    所以,我们能够做的,是尽量将对象的引用去除(通过 delete 或者 =null ),但是,是否被回收了,那么就要看浏览器了。
      

  4.   

    如果没有循环引用,GC会自动回收的,函数执行完毕,t的引用以不存在了,自动消失,最差的IE也会回收它
      

  5.   

    关不了,//释放内存的函数
           CollectGarbage(); 
    找到一个这样的函数可以释放,IE才支持!!