delete 可以删除一些变量,属性。但是并不是全部都可以删除。一些内置的核心客户端属性不能删除,用户通过var声明的变量不能删除,通过function定义的函数和函数参数也是不能删除的。在ECMAScript5严格模式中delete操作数如果是非法的会抛出异常。我们在非严格模式下操作的话,只是简单的返回false。
我们适当做一些实验
> var o = {x:1, y:2}
undefined
// 可以删除它的属性
> delete o.x
true
> typeof o.x
'undefined'
// 但是不能删除变量本身
> delete o
false
// 删除的值不是左值的时候直接返回true,但是不代表它删除成功
> delete 1
true
如果尝试删除非全局变量的话会返回false
> a = 11
11
> var b = 12
undefined
> delete a
true
> delete b
false
上面例子可以看出带var声明的变量是不能够用delete来删除的, 那么函数是怎样呢?
// 对函数进行delete操作
> a = function() {}
[Function]
> delete a
false
// 对函数的参数进行delete操作
> var a = function(x) {return delete x; }
undefined
> a()
false
跟引言说的一样不能够对函数以及函数的参数进行delete操作。
从今天开始Javascript的文章将会根据主题分成多个文件(不同的博客)进行管理。一方面方便自己管理,另一方面缩减了篇幅也方便读者阅读。不然这么长篇达伦谁看的下去啊 _。感谢您的阅读。