3

例如:这里我用var声明了一个变量,然后尝试删除它并失败。

var derp = "foo";        
\> "foo"    
derp;    
\> "foo"    
this.derp;    
\> "foo"    
delete derp;    
\> false    
derp;    
\> "foo"   

但是,如果我创建一个没有 var 的变量,那么我可以成功删除它。

perd = "boo";    
\> "boo"    
this.perd;    
\> "boo"    
delete perd;    
\> true    
perd;    
\> undefined  

谁能为我解释这种行为?我敢肯定是有原因的。

4

1 回答 1

7

delete操作员不会删除变量。它只从对象中删除属性。

当您使用裸标识符而不用var关键字声明它时,它不是变量,而是全局变量的属性(通常window在浏览器中)。这就是为什么你可以删除它。

此处delete提供了您可能想知道的更多关于运营商的信息。

于 2013-02-27T04:26:28.307 回答