このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
JavaScript のstrict モード専用の例外 "applying the 'delete' operator to an unqualified name is deprecated" は、delete 演算子を用いて変数を削除しようとしたときに発生します。
In this article
エラーメッセージ
js
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)エラータイプ
何がうまくいかなかったのか?
JavaScript では、通常の変数をdelete 演算子で削除できません。strict モードで、変数を削除しようとするとエラーが発生し、削除できません。
delete 演算子は、オブジェクトのプロパティのみ削除できます。オブジェクトプロパティは、設定可能な場合は "修飾" されます。
よくある予想とは異なり、delete 演算子は直接的なメモリーの解放とは関係ありません。メモリー管理は、参照の解放によって間接的に行われます。メモリー管理ページとdelete 演算子ページで詳細を確認してください。
このエラーは、strict mode モードでのみ発生します。非 strict モードでは、演算子はただfalse を返します。
例
>変数の内容の解放
JavaScript ではプレーンな変数を削除しようとすると動作せず、 strict モードだとエラーをスローします。
js
"use strict";var x;// ...delete x;// SyntaxError: applying the 'delete' operator to an unqualified name// is deprecated変数のコンテンツを解放するには、null を設定してください。
js
"use strict";var x;// ...x = null;// x can be garbage collected