JavaScript学习笔记-delete运算符
作者:nunumick 发布时间:29 Dec 2010 分类: front-end
关于javascript的delete运算符,MDN里有相关文档。以下是我的学习笔记,更多是要关注特殊情况的使用和注意点。
一、语法
delete后面的表达式必须给出一个属性的引用,比如
只有在with语句里才能使用单独的属性名
二、delete的返回值
delete是普通运算符,会返回true或false。规则为:当被delete的对象的属性存在并且不能被删除时 返回false,否则返回true。 这里的一个特点就是,对象属性不存在时也返回true,所以返回值并非完全等同于删除成功与否。
三、哪些情况下不允许delete
上例提到的var和function声明的变量不可以被delete,但隐式声明可以被删除
不能delete从原型链上继承的属性,但可以删除原型链上的属性
四、特例
eval执行的代码中如有通过var和function声明的变量,可以被delete
如果声明是在eval执行代码中的闭包内进行的,则变量不能被delete
五、delete 数组元素
从数组中delete其元素并不会影响数组的长度
被delete的键值已经不属于数组,但却还是可以被访问,其值为undefined。
对比直接将键值赋值undefined
可以看出delete 操作只是将键值这个属性从数组中删除了,数组本身也是对象,这个情况好理解的。如果需要保留键值,可以用undefined赋值。
标签:
javascript
,
operator
<<< EOF