delete使用var、let声明的变量

271 阅读1分钟

看题输出结果:

    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对象