Я читаю исходный код jQuery. В зависимости от jQuery.mergeПочему jQuery.merge задает длину возвращаемого значения вручную?
merge: function(first, second) {
var i = first.length,
j = 0;
if (typeof second.length === "number") {
for (var l = second.length; j < l; j++) {
first[ i++ ] = second[ j ];
}
} else {
while (second[j] !== undefined) {
first[ i++ ] = second[ j++ ];
}
}
first.length = i;
return first;
}
Есть две вещи, которые я не могу понять:
- Почему он проверил тип second.length, но не проверяют тип first.length?
- Поскольку длина массива увеличивается автоматически, почему нам нужно установить длину вручную?
спасибо.
Я попытался объединить массив в ассоциативном массив, но длина результата равна длине массива. Кроме того, я не думаю, что Merge может обрабатывать ассоциативные массивы, потому что есть еще одна функция «продление», предназначенная для выполнения этой работы. – liuyl