看题输出结果:
let a = 1;
var b = 4;
c = 3;
let obj = {
x: 1,
};
delete a; // es6中的let声明的变量 不会挂载到 window上,删除无效
delete obj.x; // 对象引用类型,存储的是地址,允许修改内部属性
delete b; // 删除无效,使用var 全局声明会挂载在window上,但是无权删除,
delete 2; // 无其他作用
delete c; // 有效删除,没有使用var做前缀声明,会自动挂载在window上,有权进行删除
console.log(a, obj, 2, b, c); // 1 undefined 2 4 ReferenceError: c is not defined
delete操作符用于删除对象的某个属性;如果没有指向这个属性的引用,那它最终会被释放。window是一个Object对象