能够删除非var变量,但不能删除var声明的变量吗?

Ale*_*bas 3 javascript variables

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

var derp = "foo";        
\> "foo"    
derp;    
\> "foo"    
this.derp;    
\> "foo"    
delete derp;    
\> false    
derp;    
\> "foo"   
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建一个没有var的变量,那么我就能成功删除它.

perd = "boo";    
\> "boo"    
this.perd;    
\> "boo"    
delete perd;    
\> true    
perd;    
\> undefined  
Run Code Online (Sandbox Code Playgroud)

任何人都可以为我解释这种行为吗?我确信有一些原因.

Ted*_*opp 7

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

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

此处delete提供有关您可能想知道的有关操作员的更多信息.