Небольшой тест на хроме.
Логично предположить что замыкания будут отражаться на расходе памяти.
Пробую мерить расход памяти для 10 000 000 замыканий.
Cначало прогонем без цикла -
5 340 (не одного замыкания)
для alert (1) -
473 000 (здесь мы не тянем за собой scope)
для alert (data) -
717 000 (здесь мы тянем за собой scope)
для eval - БОЛТ
, виснет, но для 1000 000 замыканий составляет
117 000, значит где то
1 170 000. для 10 000 000
Код теста
var arr=[];
test=function(){
var data="893749237776876872346873264782364823647324823647326473647";
data=data+"893749237776876872346873264782364823647324823647326473647";
data=data+"893749237776876872346873264782364823647324823647326473647";
data=data+"893749237776876872346873264782364823647324823647326473647";
data=data+"893749237776876872346873264782364823647324823647326473647";
data=data+"893749237776876872346873264782364823647324823647326473647";
data=data+"893749237776876872346873264782364823647324823647326473647";
return function(){
eval(" alert"+"(data)");
//alert(data);
//alert(1);
}
}
for (var i=0;i<10000000;i++){
arr.push(test());
}
выводы.
-Замыкание пояляется только если мы используем переменные внешний функции
-eval ощутимо увеличивает расход памяти на замыкания, к тому имеет проблемы с большим количеством.