delete vs undefined vs null (v11)

Revision 11 of this benchmark created on


Description

The delete operator removes a property entirely. Setting a property to undefined removes the value. Setting a property to null changes the value to the null value.

Technically they are not equivalent, but in practice they are often used to mean the same thing: that a property is unset.

Preparation HTML

<script>
  var id, o = {
    p: {}
  };

  function reset() {
    if (!o.p) o.p = ++id;
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
delete object.property
id = 0;
for (var i = 0; i < 1000; i++) {
  delete o.p;
  reset();
};
ready
delete object["property"]
id = 0;
for (var i = 0; i < 1000; i++) {
  delete o["p"];
  reset();
}
ready
object.property = undefined
id = 0;
for (var i = 0; i < 1000; i++) {
  o.p = undefined;
  reset();
}
ready
object["property"] = undefined
id = 0;
for (var i = 0; i < 1000; i++) {
  o["p"] = undefined;
  reset();
}
ready
object.property = null
id = 0;
for (var i = 0; i < 1000; i++) {
  o.p = null;
  reset();
}
ready
object["property"] = null
id = 0;
for (var i = 0; i < 1000; i++) {
  o["p"] = null;
  reset();
}
ready
object.property = void 0
id = 0;
for (var i = 0; i < 1000; i++) {
  o.p = void 0;
  reset();
}
ready
object["property"] = void 0
id = 0;
for (var i = 0; i < 1000; i++) {
  o["p"] = void 0;
  reset();
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.