--- title: >- SyntaxError: applying the 'delete' operator to an unqualified name is deprecated slug: Web/JavaScript/Reference/Errors/Delete_in_strict_mode tags: - Error - Errors - JavaScript - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode ---
JavaScript の strict モード専用の例外 "applying the 'delete' operator to an unqualified name is deprecated" は、 delete
演算子を用いて変数を削除しようとしたときに発生します。
SyntaxError: Calling delete on expression not allowed in strict mode (Edge) SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox) SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome)
strict モード でのみ {{jsxref("SyntaxError")}}。
JavaScript では、通常の変数を delete
演算子で削除できません。strict モードで、変数を削除しようとするとエラーが発生し、削除できません。
delete
演算子は、オブジェクトのプロパティのみ削除できます。オブジェクトプロパティは、設定可能な場合は "修飾" されます。
よくある予想とは異なり、 delete
演算子は直接的なメモリーの解放とは関係ありません。メモリー管理は、参照の解放によって間接的に行われます。メモリー管理ページと delete
演算子ページで詳細を確認してください。
このエラーは、strict mode モードでのみ発生します。非 strict モードでは、演算子はただ false
を返します。
JavaScript ではプレーンな変数を削除しようとすると動作せず、 strict モードだとエラーをスローします。
'use strict'; var x; // ... delete x; // SyntaxError: applying the 'delete' operator to an unqualified name // is deprecated
変数のコンテンツを解放するには、{{jsxref("null")}} を設定してください。
'use strict'; var x; // ... x = null; // x can be garbage collected