关于javascript的delete : { Blog:Cnyzx,Type:Technology}

博学之,审问之,慎思之,明辨之,笃行之,自助者,天助之

关于javascript的delete

icon

最近看到一些网站的JS中有delete的关键字,顿时产生了兴趣,搜索了之后找到了一篇文章Understanding delete,讲的还可以。那么,首先我引用一下这篇文章里面的一句话“function is treated as a normal variable—it can be copied to a different variable and even deleted.” ,意思是:函数可以被当成变量去对待,它能够被复制到另外一个变量甚至能够被删除。

那么我就有疑问,为什么删除,何时删除?

首先看看那个句子解释的列子

  >>> var sum = function(a, b) {return a + b;}
  >>> var add = sum;
  >>> delete sum
  true
  >>> typeof sum;
  "undefined"

 

但是实际上,这是不对的,我自己也在chrome上面测试了一下,见图

javascript delete function

很明显的看出了实际与之前的书上事例是不同的,但是这里有个结论就是:delete没办法删除javascript变量。

所以得明白delete怎么工作的,以下有几个例子可以说明。首先使用delete是可以这样的

 var o = { x: 1 };
  delete o.x; // true
  o.x; // undefined

但是不应该是像这样delete变量,或者删除包含函数体的变量

 var x = 1;
  delete x; // false
  x; // 1
function x(){}
  delete x; // false
  typeof x; // "function"

这些都是从脚本本身的角度来比较的,但某些浏览器可能表现的特性不一样,但是从标准来说,了解这些区别,写出标准的代码更好。