var str="dd";
delete str ;
alert(str)
没有效果,,还是弹出了原来的值
 

解决方案 »

  1.   

    var str = 'dd'; //声明了一个变量
    delete str;   //删除了一个属性(window.str)而不是str。
    alert(str);   //依然存在
    换成
    str = 'dd';
    delete str;
    alert(str)
    试试这个时候str== window.str了
      

  2.   


    1.javascript的变量是无类型的(untype)。2.用var声明的变量是永久性的。所以当你试图用delete来删除其声明的变量时会报错。3.当试图读取一个未声明的变量时,会报错。4.当给一个未用var声明的变量赋值时,js会隐式的声明该变量(这个变量会被声明为全局变量,所以最好用var来声明。这一点在局部声明时非常重要)。5.在函数内部,局部变量的优先级要高于同名的全局变量(相当于隐藏了该同名的全局变量)。
      结合4,5两点。我们给出一个列子来说明其重要性。       var part = "global";   //声明一个全局变量
          function checkpart()
          {
              var part = "local";   //声明一个局部变量
               document.write(part);
           }
         checkpart();                //输出local
         document.write(part);       // 输出global
    当你在声明part局部变量时省略了var。这就相当于声明了一个全局变量,即改变了全局变量part的值。下面的两条语句输出的都是local。6.没有块级作用域。函数中声明所有变量(无论在哪里声明的),在整个函数中他都是有定义的。
      var part = "global";
     function checkvariable()
    {
       document.write(part);
    }
    checkvariable();  //输出global
    var part = "global";
    function checkvariable()
    {
      documen.write(part);
      var part = "local";
      document.write(part);
    }
    checkvariable();
    上述代码第一次输出的不是global,而是undefined。这告诉我们在函数中声明变量时尽量将其集中放在函数的开头。7.变量的内容
      js中数据类型分为两组:基本数据类型和引用类型。数值,布尔值,null和未定义的值属于基本类型。对象,数组,函数属于引用类型(函数也是一种数据类型)。(字符串属于特殊类型)。基本数据类型在内存中具有固定的大小:一个数值占8个字节(在基本类型中最大),一个布尔值占一位。而引用类型具有任意长度,没有固定的大小。无法将其直接与每个相关变量储存在8个字节的内存中。所以变量储存的是这个值的引用(通常引用有两种形式:指针和内存地址)。这两中数据类型具有很大的差别。 var i = 1;
     var j = i;
     i = 2;
     alert(j);  //输出1
    var i = new Array(1,2,3);
    j = i;
    i[0] = 2;
    alert(j);   //输出2,2,3 8.作为属性的变量
       js解释器在工作之前会在所有js代码运行之前创建一个全局对象。这个全局对象的属性就是所有的全局变量。同理也会存在一个调用对象。而这个调用对象的属性就是所有的局部变量。一个js解释器可以工作在不同的执行环境中。这些执行环境彼此独立且又相互联系。(执行环境:不同的窗口,框架)。
      

  3.   

    删除变量可以直接设置undefined就可以了:
    var str="dd";
    str=undefined;
    alert(str)
      

  4.   

    <script type="text/javascript">
    alert('value:'+str+'\ttype:'+typeof(str)) //声明变量前,引用
    var str="dd";
    alert('value:'+str+'\ttype:'+typeof(str)) //声明并赋值变量后,引用
    str=undefined;
    alert('value:'+str+'\ttype:'+typeof(str)) //取消变量后,引用,和第一个相同
    </script>