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