Объявление функции быстрее, чем выражение функции?

Объявление функции функции b/w и выражение функции прекрасно описаны в var functionName = function() {} vs function functionName() {}
В этом упоминалось, что объявление функции оценивается во время разбора, а выражение функции оценивается на этапе выполнения

В bytes.com он упомянул, что объявление функции быстрее, чем выражение функции.

Я создал базовый тестовый пример: http://jsperf.com/function-declaration-vs-function-expression

Объявление функции:

function myfunc() {
 alert("yo");
}
myfunc();

Выражение функции:

var myfunc = function() {
 alert("yo");
}
myfunc();

Тест показал, что выражение функции на 90% медленнее, чем объявление функции.

Почему такая разница в скорости?

Edit:
Из результатов в http://jsperf.com/function-declaration-vs-function-expression

В Chrome, IE9, Opera & Safari → Объявление функции быстрее, чем выражение функции

В Firefox, IE7, IE8 → Выражение функции быстрее, чем Объявление функции

В IE9 Объявление функции выполняется быстрее, тогда как в IE 7 и 8 выражение функции выполняется быстрее. Это из-за изменения в JavaScript-движке в IE9, или был ли этот шаг преднамеренным?

Ответ 1

В Firefox также есть нестандартный Function Statements, который позволяет условно выбирать между объявлениями функций (по спецификации, вы не можете). Просто используя пример Juriy "kangax" Зайцева:

if (true) {
    function foo(){ return 1; }
} else {
    function foo(){ return 2; }
}
foo(); // 1
// Note that other clients interpet `foo` as function declaration here, 
// overwriting first `foo` with the second one, and producing "2", not "1" as a result

Таким образом, они компилируются во время выполнения, а не в синтаксическом разборе:

Операторы функций НЕ объявляются во время создания переменной. Они объявляются во время выполнения, как и выражения функций.

Другие браузеры, вероятно, будут предварительно компилировать объявления функций, делая их более быстрыми во время выполнения, но Firefox должен интерпретировать объявления функций во время выполнения, не вызывая значительной разницы между скоростью деклараций функций и выражений функций в браузерах на базе Gecko.

Ответ 2

Это должно быть проблемой, зависящей от браузера. Некоторые браузеры могут компилировать javascript по-разному, если это выражение, а не объявление, а некоторые могут относиться к ним точно так же.