在Javascript是可以使用delete来手动删除变量,通过这样的方法让GC来回收内存,但在JS中并不是所有的对象都可以被删除的
JS中通过 varfunction 声明因含有DontDelete,而不可被删除:
var x = 1;
delete x; // false
typeof x; // 1
function x(){}
delete x; // false
typeof x; // "function"
delete x; // false
typeof x; // 1
function x(){}
delete x; // false
typeof x; // "function"
但是对象的属性、数组成员却是可以删除的:
var o = { x: 1 };
delete o.x; // true
typeof o.x; // undefined
num = 123; //因为num前面没有var,所有等价于: this.num = 123, 即当前对象的一个属性。
delete num;
delete o.x; // true
typeof o.x; // undefined
num = 123; //因为num前面没有var,所有等价于: this.num = 123, 即当前对象的一个属性。
delete num;
因此如果我们要回收某个对象可以使用Object来封装一下。
与通常对 delete 的理解不同,delete 操作符与直接释放内存无关。内存管理 通过断开引用来间接完成的,查看内存管理页可了解详情。
delete
操作符会从某个对象上移除指定属性。成功删除的时候回返回 true
,否则返回 false