论坛首页 Web前端技术论坛

JavaScript中delete操作符

浏览 5450 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (15)
作者 正文
   发表时间:2011-01-03   最后修改:2011-01-03
深入理解JavaScript中delete操作符,特此记录下。

参考:
http://xo-tobacoo.iteye.com/blog/346644
http://xiaolele.iteye.com/blog/682242
http://perfectionkills.com/understanding-delete/
   发表时间:2011-01-07  
呃 你这样会被投隐藏的
0 请登录后投票
   发表时间:2011-01-07  
whaosoft 写道
呃 你这样会被投隐藏的

主要是记录下,慢慢体会。
0 请登录后投票
   发表时间:2011-01-07  
还是总结下,在发布出来吧
0 请登录后投票
   发表时间:2011-01-07   最后修改:2011-01-07
内容里有矛盾
var x = 1;
delete x;
在我浏览器里试x是删除了,
可是在博客里说没有删除。
0 请登录后投票
   发表时间:2011-01-09  
lgzjw 写道
内容里有矛盾
var x = 1;
delete x;
在我浏览器里试x是删除了,
可是在博客里说没有删除。

全局变量可以delete,局部变量不可以。
var x=1;
delete x;
alert(x)
这样显示undefined
function test(){
   var x=1;
   delete x;
   alert(x)
}
这样执行test显示是1
function test(){
   x=1;
   delete x;
   alert(x)
}
这样执行test显示undefined
1 请登录后投票
   发表时间:2011-01-10   最后修改:2011-01-10
lgzjw 写道
内容里有矛盾
var x = 1;
delete x;
在我浏览器里试x是删除了,
可是在博客里说没有删除。

是这样的,如果是全局变量,那么它是全局对象的一个属性(比如在浏览器中,全局的var x;就是在window上声明了一个属性x),任何对该对象的访问可以视为访问全局对象的属性。
故 ,在全局作用域:
var x = 1;
delete x;

等效于
var x = 1;
delete window['x'];//需要环境为浏览器环境,其他环境中global object 不一定是啥哦

所以全局的会被删除。
局部变量不是任何对象的属性,所以delete不会起作用(一定要严格点说的话with块内的属性也可以删除。。。。。。。。。。)
1 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics