Function Declaration vs. Function Expression

JavaScript performance comparison

Revision 7 of this test case created and last updated

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    var element = document.createElement('div'),
      ev = (1, eval);
};

Benchmark.prototype.teardown = function() {
    element = null;
    ev = null;
};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
Function Declaration
(function() {

function fn() { return 1; };

var result = fn();

}());
 
pending…
Function Expression
(function() {

var fn = function() { return 1; };

var result = fn();
}());
 
pending…
Function Constructor
(function() {

var fn = new Function('return 1;');

var result = fn();

}());
 
pending…
DOM Function Transfer
(function() {

element.setAttribute('onclick', 'return 1;');

var result = element.onclick();

}());
 
pending…
Named Function Expression
(function() {

var fn = function fn() { return 1; };

var result = fn();
}());
pending…
Eval Call
(function() {

var result = eval('1;');
}());
pending…
Eval Indirect Call
(function() {

var result = ev('1;');
}());
pending…
Eval Indirect Call
(function() {

var result = ev('1;');
}());
pending…
Eval Indirect Call
(function() {

var result = ev('1;');
}());
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment