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

이 문서는 아직 자원 봉사자들이 한국어로 번역하지 않았습니다. 참여해서 번역을 마치도록 도와 주세요!
English (US)의 문서도 읽어보세요.


TypeError: property "x" is non-configurable and can't be deleted. (Firefox)
TypeError: Cannot delete property 'x' of #<Object> (Chrome)

Error type

TypeError in strict mode only.

What went wrong?

It was attempted to delete a property, but that property is non-configurable. The configurable attribute controls whether the property can be deleted from the object and whether its attributes (other than writable) can be changed.

This error happens only in strict mode code. In non-strict code, the operation returns false.


Non-configurable properties are not super common, but they can be created using Object.defineProperty() or Object.freeze().

'use strict';
var obj = Object.freeze({name: 'Elsa', score: 157});
delete obj.score;  // TypeError

'use strict';
var obj = {};
Object.defineProperty(obj, 'foo', {value: 2, configurable: false});
delete obj.foo;  // TypeError

'use strict';
var frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop();  // TypeError

There are also a few non-configurable properties built into JavaScript. Maybe you tried to delete a mathematical constant.

'use strict';
delete Math.PI;  // TypeError

See also

문서 태그 및 공헌자

 이 페이지의 공헌자: nmve, fscholz
 최종 변경: nmve,