删除的替代方案?

McK*_*yla 7 javascript

我一直在浏览很多关于JavaScript严格模式的博客文章,文档等.

我注意到delete关键字有很多限制.我甚至不知道你是否可以称他们为限制.似乎delete不再有效.

我很想用严格的模式.这是一个好主意.但我也认为删除是一个好主意.

有没有其他方法可以"删除"变量,或者我只是搞砸了?

Ray*_*nos 6

你没有delete变量。

delete用于从对象中删除属性。

delete foo.a将从"a"object 中删除属性foo

为什么需要从作用域中删除局部变量?您只需将变量设置为undefined

(function(undefined) {
    // undefined is undefined.
})();

(function() {
    var undefined; // undefined is undefined
})();
Run Code Online (Sandbox Code Playgroud)

检查未定义的另一种方法是,foo === void 0因为void是一个运算符,它运行其后面的表达式并返回undefined。这是一个聪明的伎俩。


Kar*_*oll 2

将变量设置为怎么样null?将变量设置为 后null,JavaScript 垃圾收集器将在下次运行时删除所有未引用的变量。

HTH。

编辑:正如 @chris Buckler 在评论中提到的,这不能在全局范围内完成,因为全局变量永远不会被垃圾收集。