Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】TypeError: can't delete non-configurable array elementエラーの使い方

TypeError: can't delete non-configurable array elementエラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

TypeError: can't delete non-configurable array elementオブジェクトは、JavaScriptにおいて、配列の特定の要素をdelete演算子で削除しようとした際に発生するTypeErrorの一種を表します。

このエラーは、削除しようとしている配列要素の内部的な属性である「configurable」がfalse(非設定可能)に設定されている場合に発生します。JavaScriptのプロパティには、削除可能かどうかなどを制御する「プロパティ記述子」と呼ばれる属性群が存在し、その一つがconfigurable属性です。これがfalseに設定されている場合、delete演算子を使ってそのプロパティ、すなわち配列の要素を削除することはできません。

通常、JavaScriptの配列要素はデフォルトでconfigurableがtrueであるため、delete演算子で削除することが可能です。しかし、Object.defineProperty()メソッドを使って特定のインデックスのプロパティをconfigurable: falseとして定義した場合や、厳格モードでの特定の操作など、プロパティが非設定可能になるケースが存在します。

このエラーに遭遇した場合は、削除対象の要素がなぜ非設定可能になっているのかを確認し、対応する必要があります。配列から要素を削除したい一般的なケースでは、Array.prototype.splice()メソッドの利用が推奨されます。splice()は配列の要素を削除し、配列の構造を適切に維持できるため、より安全で汎用的な方法です。

構文(syntax)

1'use strict';
2
3const myArray = [];
4Object.defineProperty(myArray, 0, {
5  value: 'immutable',
6  configurable: false
7});
8
9// この操作は TypeError: can't delete non-configurable array element を発生させる
10delete myArray[0];

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語