例如:爲什麼我不能刪除用var聲明的javascript值?
x = "Hello";
delete x; // returns true, x is removed
var y = "Hello";
delete y; // returns false, y is not removed
我沒有興趣在如何出現這種情況,我想知道爲什麼的語言具有此功能。
例如:爲什麼我不能刪除用var聲明的javascript值?
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
刪除變量,但可以使用它來刪除對象屬性,這就是它在第一種情況下的作用。
因此,我可以看到它像從對象中刪除屬性就像從數組中刪除元素? – ProgrammerAtWork
從某種意義上說,是的。 – JJJ
當然。 'delete'從對象中移除一個屬性。 'var'關鍵字將變量附加到當前的本地上下文,而不帶'var'的聲明隱式地將變量附加到全局對象,即'window'。但是,當'var'附加到'window'(根環境)時,'delete'仍然不起作用。 – Powerslave