Как PHP-кодер, вы привыкли к тому, что ключи массивов довольно произвольны.В JavaScript, однако, если вы присвоите элемент массива численно, который не существует, массив будет выделен с пустыми элементами вплоть до того, который вы создали.Это поведение, которое вы нашли.С другой стороны, объекты, обозначенные {}
, а не []
, принимают произвольные имена свойств (с осторожностью) и функционируют немного ближе к тому, как вы привыкли функционировать структуры массива PHP.Это не означает, что объекты JavaScript (или литералы объектов) являются прямым аналогом массивов PHP ....
Если вам нужна структура данных с ключом «10», это работадля литерала объекта (хотя это не очень хорошая практика именовать свойства объекта численно.
var fred = {};
fred["10"] = 1;
Обратите внимание, что более нормальный синтаксис работы с литералом объекта - это нотация object.property
, но это не так.допустимо для числовых свойств:
// name as a property
fred.name = "fred";
// Syntax error...
fred.10 = 10;
// Use [] notation for numeric properties:
fred["10"] = 10;
У литералов объекта, однако, нет свойства length
, поэтому вы не можете сделать:
fred.length;
// undefined