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.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…