var captionArray = new Array();
captionArray['bild1'] = [];
captionArray ist gar kein Array, jedenfalls bekommt er bis hier kein einziges Array-Element zugewiesen und hat demnach auch eine length von 0.
»Assoziative Arrays« gibt es in JavaScript nicht. Bei der obigen Zuweisung wird eine Objekteigenschaft angelegt, aber kein Array-Element. Das geht, weil Arrays auch Objekte sind.
Um Verwirrungen und spätere Überraschungen zu vermeiden, sollte man daher direkt caption = new Object() bzw. in der Kurzschreibweise caption = {}; verwenden.
Mathias