最近看到一些网站的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上面测试了一下,见图

很明显的看出了实际与之前的书上事例是不同的,但是这里有个结论就是: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"
这些都是从脚本本身的角度来比较的,但某些浏览器可能表现的特性不一样,但是从标准来说,了解这些区别,写出标准的代码更好。

