delete

You can 'delete' an object property.It has been known that 'delete' is a relatively slow operation (as of July 2017).


var iterationsTotal = 10000000;  // 10 million
var o;
var t1 = Date.now(), t2;

for (let i = 0; i < iterationsTotal; i++) {
  o = {a: 1, b: 2, c: 3, d: 4, e: 5};
  delete o.a;
  delete o.b;
  delete o.c;
  delete o.d;
  delete o.e;
}
console.log((t2 = Date.now()) - t1);

for (let i = 0; i < iterationsTotal; i++) {
  o = {a: 1, b: 2, c: 3, d: 4, e: 5};
  o.a = o.b = o.c = o.d = o.e = undefined;
}
console.log(Date.now() - t2);

var o = {a: 1, b: 2};
delete o.a;
console.log('a' in o);
console.log(JSON.stringify(o));

o.b = undefined;
console.log('b' in o);
console.log(JSON.stringify(o));

6135 205 false {"b":2} true {}

Be careful when you try to 'delete' an element from an array.


var a = [1, 2, 3];
delete a[1];
console.log(a);

a.splice(1, 1);
console.log(a);

[1, undefined, 3] [1, 3]

You can't delete a variable solely:


var a = 10;
delete a;
console.log(a);

a = undefined;
console.log(a);

10 undefined