Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
delete 演算子は、オブジェクトからプロパティを除去します。プロパティの値がオブジェクトであり、そのオブジェクトへの参照がこれ以上存在しない場合、そのプロパティが保持するオブジェクトは最終的に自動的に解放されます。
メモ: delete 演算子の次の式は、より幅広い構文が許容されますが、意味のある動作をもたらすのは上記の方法のみです。
オブジェクト名、またはオブジェクトとして評価される式です。
property削除するプロパティです。
プロパティが自己の構成不可プロパティであった場合、厳格モードでなければ false を返します。それ以外の場合は true を返します。
厳格モードで、このプロパティが自己の構成不可プロパティである場合は発生します。
ReferenceErrorobject が super である場合に発生します。
delete 演算子は、優先順位が他の単項演算子(例:typeof)と同等です。 したがって、より優先度の高い演算子で構成される任意の式を受け入れます。ただし、以下の形式は厳格モードにおいて早期の構文エラーが発生します。
クラスは自動的に厳格モードで動作し、プライベート要素はクラス本体内でのみ合法的に参照できるため、プライベート要素が削除されることは決してありません。 delete 識別子 は、識別子 がグローバルオブジェクトの構成不可プロパティを参照している場合に機能する可能性がありますが、この形式は避けるべきであり、代わりに globalThis を接頭辞として付けるべきです。
それ以外の式も受け入れられますが、それらは意味のある動作にはつながりません。
delete 演算子は、指定されたプロパティをオブジェクトから取り除きます。削除が成功した場合、true を返し、失敗した場合は false を返します。一般的に信じられていることとは異なり (おそらく C++ における delete のような他のプログラミング言語の影響ですが)、delete 演算子は、直接的にメモリーを解放することはありません。メモリーの管理は参照が切れることで間接的に行われます。詳細はメモリー管理ページを参照してください。
以下の次のシナリオを考慮することが重要です。
メモ: 次の例では、暗黙的にグローバル変数を生成したり識別子を削除したりするなど、厳格モードでは禁止されている厳格モード非対応の機能のみを使用しています。
次の例では、プロトタイプチェーン上に同じ名前を持つプロパティがある場合に、オブジェクトの自身のプロパティを削除しています。
配列の要素を削除したとき、配列の length は影響を受けません。これは配列の最後の要素を削除しても保持されます。
delete 演算子が配列の要素を削除すると、要素は配列からなくなります。 次の例では、trees[3] が delete で削除されます。
これによって、空のスロットを持つ疎配列が作成されます。ある配列の要素を存在したまま未定義の値としたい場合は、delete 演算子の代わりに undefined 値を使用してください。次の例では、trees[3] に undefined を割り当てていますが、配列のその要素は存在したままです。
代わりに、配列の内容を変更して配列要素を削除したい場合は、splice() メソッドを使用してください。次の例では、splice() を使用して配列から trees[3] を削除しています。
プロパティが構成不可としてマークされている場合、delete は何の効果もなく、false を返します。厳格モードでは、これは TypeError が発生します。
var は、delete 演算子で削除できない構成不可のプロパティを作成する:
厳格モードでは、これらは例外が発生します。
グローバルプロパティが構成不可な場合(例えば、直接プロパティ代入による)、そのプロパティは削除することが でき、その後グローバル変数としてそれらを参照すると ReferenceError が発生します。
| ECMAScript® 2027 Language Specification # sec-delete-operator |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。