Допустим, у меня есть следующий сценарий:
var namespace = {};
(function($)
{
$.extend(namespace,
{
test1: function(someArray, someObj)
{
for(var i= 0, ii= someArray.length;i<ii;i++)
{
var text = someObj[someArray[i]];
// do something with text
}
},
test2: function(someArray, someObj,i,ii,text)
/*
see that the i,ii,text are unused parameters,
that will be used instead of variables
*/
{
for(i= 0, ii= someArray.length;i<ii;i++)
{
text = someObj[someArray[i]];
// do something with text
}
},
});
})(jQuery);
Теперь результаты test1 и test2 одинаковы ... но как насчет производительности, использования памяти ...
Есть ли разница между объявлением тестовых переменных i, ii двумя способами, представленными выше?
Я думаю, что test2, например, вероятно, более эффективен, потому что переменные находятся в локальной области действия функции, поэтому после выхода из функции контекст выполнения уничтожается, освобождая ресурсы, используемые для аргументов ... переменные будут не может быть назначен глобальному объекту 'window'.
Так какой метод работает лучше всего? а почему?
[Изменить]
Спасибо всем за ответы!
Нет проблем, если код имеет проблемы с читабельностью ... Меня сейчас интересует только производительность / использование памяти.