SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
JavaScript 严格模式下才会出现的异常“对不合格名称应用 'delete' 运算符已弃用”,此异常发生在尝试使用 delete 运算符删除变量时。
消息
SyntaxError: Delete of an unqualified identifier in strict mode. (V8-based) SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox) SyntaxError: Cannot delete unqualified property 'a' in strict mode. (Safari)
错误类型
SyntaxError 仅在严格模式下出现。
哪里出错了?
JavaScript 中的普通变量不能使用 delete 运算符删除。在严格模式下,尝试删除变量将抛出错误,并且不允许进行此操作。
delete 运算符只能删除对象的属性。如果对象属性是可配置的,则它们是“合格的”。
与普遍的看法相反,delete 运算符与直接释放内存没有任何关系。内存管理是通过断开引用间接完成的,请参阅内存管理页面和 delete 运算符页面了解更多详细信息。
此错误仅发生在严格模式代码中。在非严格代码中,此操作仅返回 false。
示例
释放变量内容
在严格模式下尝试删除普通变量会抛出错误
js
"use strict";
var x;
// …
delete x;
// SyntaxError: applying the 'delete' operator to an unqualified name
// is deprecated
要释放变量的内容,可以将其设置为 null
js
"use strict";
var x;
// …
x = null;
// x can be garbage collected