この MDN ページによると、delete
キーワードは
プロパティが存在し、削除できない場合にのみ false を返します。それ以外の場合は true を返します。
ただし、プロパティが削除されていないにもかかわらず、 をdelete
返すケースが見られます。true
delete Window
delete alert
delete dir
delete console
delete 2
delete null
delete {}.x
...
実際、で次のスクリプトを実行すると、 のほとんどすべてのプロパティがwindow
true を返します。delete
about:blank
for(a in window) { if(delete window[a]) { console.log(a); } }
ただし、 のほとんどのプロパティはwindow
実際には削除されません。の戻り値の本当の意味は何delete
ですか? true
削除されないプロパティが返されるのはなぜですか?
(注: の動作を説明する Chromium コードへの参照に興味がありdelete
ます。)