const vs var in closures (v3)

Revision 3 of this benchmark created by Mythea on


Preparation HTML

<script>
  const globalConst1 = 1;
  const globalConstA = "a";
  var global1 = 1;
  var globalA = "a";

  function makeConstClosure(n) {
    const value = n;

    return function() {
      return value;
    }
  }

  var cc1 = makeConstClosure(1);
  var cca = makeConstClosure("a");

  function makeVarClosure(n) {
    var value = n;

    return function() {
      return value;
    }
  }

  var vc1 = makeVarClosure(1);
  var vca = makeVarClosure("a");

  var gcc1 = function() {
      return globalConst1;
      };
  var gcca = function() {
      return globalConstA;
      };
  var gvc1 = function() {
      return global1;
      };
  var gvca = function() {
      return globalA;
      };

  var svc1 = function() {
      return 1;
      };
  var svca = function() {
      return "a";
      };

  var count = 5000;
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
const
for (var i = 0; i < count; i++) {
  if (cc1() !== 1) throw new Error();
  if (cca() !== "a") throw new Error();
}
ready
var
for (var i = 0; i < count; i++) {
  if (vc1() !== 1) throw new Error();
  if (vca() !== "a") throw new Error();
}
ready
global const
for (var i = 0; i < count; i++) {
  if (gcc1() !== 1) throw new Error();
  if (gcca() !== "a") throw new Error();
}
ready
global var
for (var i = 0; i < count; i++) {
  if (gvc1() !== 1) throw new Error();
  if (gvca() !== "a") throw new Error();
}
ready
svca
for (var i = 0; i < count; i++) {
  if (scc1() !== 1) throw new Error();
  if (scca() !== "a") throw new Error();
}
ready

Revisions

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