我在使用JSLint时遇到了这个错误:只应删除属性
为什么它不允许这样做呢?我试图删除的变量非常大,所以我希望能够加速垃圾回收。这样做不行吗?
delete
的作用是删除对象上的属性,而不是普通变量(变量对象上的属性)。
相反,你可以将所有引用值设置为 null
。当 JavaScript 引擎感觉需要清理内存时,它会自动进行垃圾回收。
如果您只是想消除jslint的警告,可以尝试以下方法:
var myHugeVariable = ...;
// do stuff with huge variable
delete window.myHugeVariable;
这应该可以正常工作,因为所有全局变量实际上都是全局对象的属性。
var a=11;
a = undefined;
不建议这样做。
var a = 5; delete a;
不会抛出错误(在 严格模式 下实际上会抛出错误),它也不会执行任何操作(delete a;
将返回false
)。所以:这是有效的代码,但它并不会做你想要的事情,只会让人感到困惑。 - Felix Klingvar a=11; alert(delete a); alert(typeof a);
将会弹出true和"undefined"。 - cuixipingdelete
删除(局部)变量。全局变量不同,因为它们实际上是附加到window
对象的属性。 - NullUserException