6

例子:

x = "Hello";
delete x; // returns true, x is removed

var y = "Hello";
delete y; // returns false, y is not removed

我对这是如何发生的不感兴趣,我想知道为什么该语言具有此功能。

4

2 回答 2

8

严格来说第一个x不是变量而是全局对象的属性。在浏览器中它通常是window(所以x = "Hello"等于window.x = "Hello")。你不能用delete它来删除变量,但你可以用它来删除对象属性,这就是它在第一种情况下所做的。

于 2013-04-13T11:49:54.690 回答
5

此页面有一个冗长的解释,说明了原因。

简短的回答是删除是针对属性,而不是变量。var y 创建一个变量。x = "something" 创建全局范围的属性。

另请注意,并非所有浏览器都处理相同的删除。 咳嗽 IE

于 2013-04-13T11:54:57.710 回答