例如:这里我用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
有人可以为我解释这种行为吗?我确信有一些原因。
答案 0 :(得分:7)
delete
运算符不会删除变量。它只从对象中删除属性。
当您使用裸标识符而不使用var
关键字声明它时,它不是变量,而是全局变量的属性(通常是浏览器中的window
)。这就是你可以删除它的原因。
有关delete
运算符的详细信息,请参阅here。