В отличие от Java Language, массивы в JavaScript имеют три функции:
1. Нет типа. Члены массива могут быть любого типа, и один и тот же массив также может быть составлен из множества различных типов членов.
2. Длина переменная. Длина массива может быть динамически изменена, поэтому в JavaScript нет проблем с доступом к массиву.
3. Разрешение. Позиции членов в массиве могут быть непрерывными (0, 1, 2, 3…) или прерывистыми. В любом массиве есть атрибут, называемый длиной. Когда участники массива непрерывны, значение длины согласуется с количеством членов массива; Когда участники массива не являются непрерывными, значение длины больше, чем количество участников массива. По сравнению с непрерывными массивами, производительность чтения и записи прерывистых массивов хуже.
Эксперимент:
Кода -копия выглядит следующим образом:
var o = [42, "Пример текста", {x: 88}]; // массив JavaScript не поддается.
console.log (o); // [42, "Пример текста", объект {x = 88}]
o [3] = 27; // массив JavaScript является динамичным.
console.log (o); // [42, «Пример текста», объект {x = 88}, 27]
o [5] = 99; // массив JavaScript редкий.
console.log (o); // [42, «Пример текста», объект {x = 88}, 27, не определен, 99]
Как видно из примера выше, для прерывистых массивов JavaScript вернется не определенным при доступе к недостающему члену. Если массив непрерывный, но один из его членов не определен, результат доступа к массиву одинаково:
Кода -копия выглядит следующим образом:
var a = [42, "Пример текста", {x: 88}, 27, не определен, 99];
console.log (a); // [42, «Пример текста», объект {x = 88}, 27, не определен, 99]
Массив прерывится и имеет отсутствующие участники, что такое же, как массив, непрерывный, но имеет неопределенные члены. В обоих случаях результат доступа к содержимому массива одинаково. Но между ними все еще есть некоторые тонкие различия, в основном проявляющиеся в доступе к клавишу массива:
Кода -копия выглядит следующим образом:
Console.log (4 в O); // false
Console.log (4 в а); // true
Можно видеть, что, хотя результаты, полученные путем доступа к контенту в этих двух случаях, одинаковы, их внутренний механизм совершенно другой: когда массив прерывится, определенный элемент отсутствует, поэтому при доступе к члену JavaScript возвращается неопределенным; Когда массив постоянно, все члены существуют, но ценности некоторых членов являются относительно особенными и не определены.
Из приведенного выше примера мы также можем видеть, что сущность массивов в JavaScript является просто объектом с числами в качестве ключей, и нет никакой разницы между обычными значениями ключей и объектами. Фактически, при чтении и написании массива JavaScript попытается преобразовать параметры в положительные целые числа. Если преобразование будет успешным, будет выполнена операция массива (автоматически обновлять свойство длины массива). Если он не удастся, параметры будут преобразованы в строку, а затем читать и записать в обычный объект. Конечно, в реализации интерпретатора JavaScript предназначено много оптимизаций производительности для функции массивов с использованием чисел в качестве ключей. Следовательно, в фактическом использовании, если ключи объекта являются все числа, непосредственно с использованием объекта массива получат более эффективные результаты.
В процессе определения массива JavaScript позволяет появиться дополнительной запятой, а также позволяет отсутствующим участникам массива между двумя запятыми:
Кода -копия выглядит следующим образом:
var x = [1,2,3,]; // Запятая будет опущено.
Console.log (x.length); // 3
var y = [1 ,, 3]; // может быть пропущен.
Console.log (y); // [1, не определен, 3]
Console.log (1 в y); // false
Console.log (y.length); // 3
Для создания массива JavaScript поддерживает четыре метода:
1. Используйте литералы (такие как выражения кронштейнов в приведенных выше примерах), чтобы напрямую создать объект массива.
2. Используйте конструктор Array () и не проходите ни в каких параметрах. В этом случае пустой массив создается с тем же эффектом, что и [].
3. Используйте конструктор Array (), чтобы пройти в положительное целое число в качестве длины массива. В этом случае JavaScript зарезервирует соответствующее пространство памяти для хранения этого массива. Стоит отметить, что в настоящее время ключи массива не определены, то есть в массиве нет членов. Его эффект эквивалентен влиянию [,,,,]
4. Используйте конструктор Array (), чтобы пройти у членов массива.
Эксперимент:
Кода -копия выглядит следующим образом:
var z = new Array (10); // Предварительная память, но индекс еще не определяется.
Console.log (3 в z); // false
var m = новый массив (42, 33, 99, "тест", {k: 99});
console.log (m); // [42, 33, 99, "test", Object {k = 99}]
В стандарте Ecmascript 5 Array.isArray () можно использовать для определения того, является ли объект массивом:
Кода -копия выглядит следующим образом:
Array.isarray ([]); // true
Array.isarray ({}); // false