JS变量对象delete

转载:http://www.nowamagic.net/librarys/veda/detail/1673

关于变量,有一个重要的知识点。变量相对于简单属性来说,变量有一个特性(attribute):{DontDelete},这个特性的含义就是不能用delete操作符直接删除变量属性。

1 a = 10;
2 alert(window.a); // 10
3 alert(delete a); // true
4 alert(window.a); // undefined
5   
6 var b = 20;
7 alert(window.b); // 20
8 alert(delete b); // false
9 alert(window.b); // still 20

但是这个规则在有个上下文里不起走样,那就是eval上下文,变量没有{DontDelete}特性。

1 eval('var a = 10;');
2 alert(window.a); // 10
3 alert(delete a); // true
4 alert(window.a); // undefined

使用一些调试工具(例如:Firebug)的控制台测试该实例时,请注意,Firebug同样是使用eval来执行控制台里你的代码。因此,变量属性同样没有{DontDelete}特性,可以被删除。

你可能感兴趣的:(delete)