delete是javascript中用于删除对象可配置属性的一元运算符;可删对象自身configurable为true的属性及数组元素(不改length),不可删var/let/const声明的变量、函数、内置不可配置属性及原型链属性。

delete 是 JavaScript 中的一元运算符,专门用于删除对象的可配置(configurable)属性。它不作用于变量、函数或 let/const 声明的绑定,只对对象自身的属性有效。
delete 能删什么?不能删什么?
✅ 可以删除:
- 对象自身拥有的、且 configurable: true 的属性(默认情况下普通添加的属性都是可配置的)
- 数组中某个索引位置的元素(但不会改变数组 length,也不会移动其他元素)
❌ 不能删除:
- 使用 var 声明的全局变量(在非严格模式下静默失败;严格模式下报错)
- 用 let、const 或 function 声明的绑定
- 内置对象的不可配置属性(如
Object.prototype.toString) - 原型链上继承来的属性(只能删自己对象上的,不能删原型上的)
基本用法和返回值
语法很简单:delete object.property 或 delete object['property']。它返回一个布尔值:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 删除成功(属性存在且可配置)→ 返回 true
- 属性不存在、不可配置、或删除非法目标(如变量)→ 返回 true(非严格模式),或抛出 TypeError(严格模式)
注意:返回 true 并不保证一定删掉了——它只表示“操作被允许”,不是“一定成功”。判断是否真删了,得靠后续访问检测。
实际例子看效果
// 普通对象属性
const user = { name: 'Alice', age: 30 };<br>
delete user.age; // true<br>
console.log(user); // { name: 'Alice' }<br>
console.log('age' in user); // false
// 用方括号访问动态属性名
const key = 'name';<br>
delete user[key]; // true<br>
console.log(user); // {}
// 删除数组元素(不重排,length 不变)
const arr = ['a', 'b', 'c'];<br> delete arr[1]; // true<br> console.log(arr); // ['a', empty, 'c']<br> console.log(arr.length); // 3
容易踩的坑
-
不要用 delete 删除数组元素来“清空”或“收缩”数组 —— 推荐用
splice()、filter()或重新赋值 -
delete 不会触发 Vue 2 的响应式更新(Vue 2 依赖 Object.defineProperty,而 delete 后新赋值不会自动劫持);Vue 3(Proxy)能响应 delete,但一般仍建议用
Vue.delete()(Vue 2)或直接赋值 undefined - 性能影响:频繁 delete 属性可能使 V8 引擎将对象转为“字典模式”,降低后续属性访问速度
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










