Объявление функции функции 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, или был ли этот шаг преднамеренным?