2013-04-13 96 views

回答

8

嚴格地說,第一個x不是一個變量,而是全局對象的一個​​屬性。在瀏覽器中,通常是window(因此x = "Hello"等於window.x = "Hello")。您不能使用delete刪除變量,但可以使用它來刪除對象屬性,這就是它在第一種情況下的作用。

+0

因此,我可以看到它像從對象中刪除屬性就像從數組中刪除元素? – ProgrammerAtWork

+0

從某種意義上說,是的。 – JJJ

+1

當然。 'delete'從對象中移除一個屬性。 'var'關鍵字將變量附加到當前的本地上下文,而不帶'var'的聲明隱式地將變量附加到全局對象,即'window'。但是,當'var'附加到'window'(根環境)時,'delete'仍然不起作用。 – Powerslave

5

This page有一個冗長的解釋,說明原因。

簡短的回答是刪除屬性,而不是變量。 var y創建一個變量。 x =「something」創建全局範圍的屬性。

另請注意,並非所有的瀏覽器處理刪除相同。 咳嗽咳嗽IE

+0

尼斯鏈接:)只是好奇,你怎麼會遇到它? – asifrc

+0

@asifrc它在mozilla javascript文檔中被引用。 –

相關問題