为什么我不能删除用var声明的javascript值?

时间:2013-04-13 11:45:54

标签: javascript

示例:

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

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

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

This page有一个冗长的解释说明了原因。

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

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