Я знаю, что универсальный способ изменения размера массива - использовать .push()
.Изменить размер массива, просто добавив элемент и не нажимать javascript
Однако, сегодня я видел кусок кода в angularJS, что делает что-то вроде этого:
var service = {
pages: [],
doSmth: doSmth
};
doSmth();
function doSmth() {
service.pages[1] = "abc";
service.pages[5] = "def";
}
Я побежал отладчик браузера и обнаружил, что перед doSmth()
называется, pages[1]
не определен, но после того, , pages[1]
присваивается значение без каких-либо ошибок.
Как это возможно?
Поскольку страницы уже были инициализированы на страницах: []. Без страниц: [] вы увидите неопределенную ошибку. – tanjir
Присвоение значений индексам на или после длины массива позволит изменить его размер. – Ryan
Какое поведение вы ожидали? помните, что функция 'function doSmth' поднята – NicolasMoise