当一个属性被设置为不可设置,delete操作将不会有任何效果,并且会返回false。(引用类型)
var Employee = {};
Object.defineProperty(Employee, 'name', {configurable: false});
console.log(delete Employee.name); // returns false
var, let以及const创建的不可设置的属性不能被delete操作删除。(基本类型)
var nameOther = 'XYZ';
// 通过以下方法获取全局属性:
Object.getOwnPropertyDescriptor(window, 'nameOther');
// 输出: Object {value: "XYZ",
// writable: true,
// enumerable: true,
// configurable: false}
// 因为“nameOther”使用var关键词添加,
// 它被设置为不可设置(non-configurable)
delete nameOther; // return false
如果是数组对象,delete后元素为empty,但arr.length不变。
var arr=[1,2,3,4]
delete arr[2]
console.log(arr) //[1,2,,4]
console.log(arr.length) //4