javascript エラー「Uncaught TypeError: Cannot delete property ‘xxx’ of 」の解決方法

javascript エラー「Uncaught TypeError: Cannot delete property ‘xxx’ of 」の解決方法

javascriptで、エラー「Uncaught TypeError: Cannot delete property ‘xxx’ of #」が発生した場合の原因と解決方法を記述してます。厳格モード「use strict」を指定した場合のみに発生します。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 108.0.5359.99

エラー内容

以下のコードで発生。

'use strict';

let obj = {name: 'tanaka', age: 15};

Object.freeze(obj);

delete obj.age;

エラーメッセージ
※このエラーは「use strict」を使用した厳格モードのみで発生します。

Uncaught TypeError: Cannot delete property 'age' of #<Object>

画像

firefox(バージョン107)では、以下のエラーとなります。

Uncaught TypeError: property "age" is non-configurable and can't be deleted

画像

原因

「freeze」を使用して、プロパティの編集を禁止したあとに削除しているため

解決方法

禁止する前に削除する

'use strict';

let obj = {name: 'tanaka', age: 15};

delete obj.age;

Object.freeze(obj);