Аргументы не Array
Object
, которые в некоторой степени ведут себя как массив.
if(arguments.length > 0) { // Slow AND superfluous
for (var i = 0; i < arguments.length; i++) { // Even SLOWER
arguments[i]; // Holy...
Кэш длина, доступ к свойству медленный, IE6 вообще не будет иметь никакой оптимизации для .length
, и я даже подозреваю, что он будет очень медленным при использовании arguments[i]
, так как он не настоящий Array
и поэтому может выполнить поиск неоптимизированного свойства.
Если вы хотите получить лучшее из обоих миров, передайте нормальный Array
, используйте простой цикл for
и cache
length
.
function ie6PNGFixLoader(scripts) {
for (var i = 0, l = scripts.length; i < l; i++) {
$.ajax({// load PNG fix scripts
url: scripts[i],
cache: true,
dataType: 'script'
});
}
}
ie6PNGFixLoader(["/Global/ICIS/Scripts/DD_belatedPNG_0.0.8a-min.js",
"/Global/ICIS/Scripts/DD_PNG_listing.js"]);
EDIT
Чтобы было понятно, синхронизация цикла бесполезна, запрос асинхронный, все, что вы делаете, синхронизируете цикл и вызов $.ajax
, здесь нет смысла оптимизировать, особенно для two записей. Даже в IE6 выполнение самого вызова Ajax (даже просто вызов $.ajax
) будет намного медленнее, чем цикл.