В firefox, похоже, существует большая разница в производительности между двумя следующими функциями:
var n1 = 12;
var add1 = function(n2){
return n1 + n2;
}
var add2 = (function(){
return function(n2){
return n1 + n2;
}
})();
Я думал, что это должно быть связано с внедрением другого уровня видимости, поэтому был создан третий пример с переменной, кэшированной на один уровень вверх. Но это показывает еще большее снижение (80%!)
var add3 = (function(){
var cn1 = n1;
return function(n2){
return cn1 + n2;
}
})();
Я бы подумал, что закрытие здесь закроет разрыв в производительности, а не увеличит его. Кто-нибудь знает, что здесь происходит?
Страница тестовой страницы jsPerf: http://jsperf.com/variable-scope-speed