JS: delete (operator) ❌

By Xah Lee. Date: . Last updated: .
delete obj[key]
  • Deletes the property key from obj.
  • Return true when:
  • Property exist and is deleted.
  • Property does not exist.
  • Argument is not an object.

else return false.

🛑 WARNING: using delete operator on array results a Sparse Array.

🟢 TIP: The delete operator never goes up the Prototype Chain.

// example of using delete operator
const jj = { kk: 1 };
delete jj.kk;
console.log(Object.hasOwn(jj, "kk") === false);
// Example of not a object
console.log((delete 3) === true);
// example of property does not exist
const jj = {};
console.log((delete jj.k) === true);
// example of failure due to frozen object
const jj = { p: 1 };
Object.freeze(jj);

// console.log((delete jj.p) === false);
// error: Uncaught TypeError: Cannot delete property 'p' of #<Object>

// console.log(Object.hasOwn(jj, "p"));
// using delete operator results a sparse array
const xx = ["a", "b"];

console.log(xx.length === 2);

delete xx[0];

// length still 2
console.log(xx.length === 2);

// but no more index 0
console.log(Object.hasOwn(xx, "0") === false);

console.log(xx);
// [ <1 empty item>, "b" ]
delete obj.key
similar to delete obj[key]. 〔see Property Dot Notation vs Bracket Notation

🟢 TIP: Never Use the Delete Operator

JavaScript. Access Properties