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