示例:
x = "Hello";
delete x; // returns true, x is removed
var y = "Hello";
delete y; // returns false, y is not removed
我对如何发生这种情况不感兴趣,我想知道为什么该语言具有此功能。
答案 0 :(得分:8)
严格地说,第一个x
不是变量,而是全局对象的属性。在浏览器中,它通常为window
(因此x = "Hello"
等于window.x = "Hello"
)。您不能使用delete
删除变量,但可以使用它来删除对象属性,这就是它在第一种情况下的作用。
答案 1 :(得分:5)
This page有一个冗长的解释说明了原因。
简短的回答是删除是属性,而不是变量。 var y创建一个变量。 x =“something”创建全局范围的属性。
另请注意,并非所有浏览器都处理删除相同的内容。 咳嗽咳嗽IE