javascript - 可以删除非 var 变量,但不能删除 var 声明的变量?

标签 javascript variables

例如:这里我用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  

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

最佳答案

delete 运算符不会删除变量。它只会从对象中删除属性。

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

有关 delete 运算符的更多信息可用 here .

关于javascript - 可以删除非 var 变量,但不能删除 var 声明的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104200/

相关文章:

javascript - 类型错误 : undefined is not a function Angular

javascript - 使用 jQuery 设置 HTML 元素的名称

javascript - ng-repeat 返回类型错误 : Cannot read property 'insertBefore' of null

php - DOCUMENT_ROOT 上方目录的 PHP $_SERVER 变量是什么?

php - 在 xpath 查询中使用 php 变量

c - Arduino 可变大小数组声明

双引号中的 PHP 静态变量

javascript - 谷歌地图地理编码问题

javascript - 在 Ag-grid 中编辑标题

Magento 在特定 cms 页面中调用客户的名字