2013-04-13 3 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 docsで参照されています。 –

関連する問題