Why is delete not allowed in Javascript5 strict mode?

The delete statement is still allowed in strict mode, but some particular uses of it are erroneous. It’s only allowed for object properties, not simple names, and only for object properties that can be deleted.

Thus

var a = {x: 0};
delete a.x;

is fine, but

delete Object.prototype;

is not, and neither is

delete a;

(The latter is actually a syntax-level error, while an attempt to delete an undeletable property is a runtime error.)

Leave a Comment