SyntaxError: applying the 'delete' operator to an unqualified name is deprecated

メッセージ

SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox)
SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome)

エラータイプ

strict モード でのみ SyntaxError

何がうまくいかなかったのか?

JavaScript では、通常の変数を delete 演算子で削除できません。strict モードで、変数を削除しようとするとエラーがスローされ、削除できません。

delete 演算子は、オブジェクトのプロパティのみ削除できます。オブジェクトプロパティは、設定可能な場合は "修飾" されます。

一般的に信じられていることと異なり、delete 演算子は直接的なメモリーを開放とは関係ありません。メモリー管理は、参照の開放によって間接的に行われます。memory management ページと delete 演算子ページで詳細を確認してください。

このエラーは、strict mode モードでのみ発生します。非 strict モードでは、演算子はただ false を返します。

プレーンな変数を削除しようとすると、JavaScript では動作せず、strict モードだとエラーをスローします:

'use strict';

var x;

// ...

delete x;

// SyntaxError: applying the 'delete' operator to an unqualified name 
// is deprecated 

変数のコンテンツを開放するには、null を設定します:

'use strict';

var x;

// ...

x = null;

// x can be garbage collected

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,