在此片段中,delete返回true。那么为什么在删除后成功调用f?
function X() {
this.f = function() {
console.log("X::f");
}
}
x = new X;
var f = x.f.bind(x);
console.log("delete: " + delete x);
f();

答案 0 :(得分:5)
delete
刚刚删除了标识符x
。该对象仍然存在于内存中,因为它绑定到f
。
f
仍引用具有相同绑定上下文的相同函数,即使x
没有。
与普遍看法不同,删除操作符无与直接释放内存有关(它只通过断开引用间接进行。有关更多详细信息,请参阅内存管理页面。)