Я просто играл с JavaScript и застрял в простой программе.
Я объявлял массив в JavaScript, например
var a = [0, 1, 2];
Тогда, поскольку в JavaScript нет фиксированного размера для массива, и мы можем добавить больше к массиву, я добавил другое целое число в массив.
a[3] = 3;
И как ожидалось Если я попытаюсь получить доступ к a[4]
, я определенно собираюсь получить его как undefined
.
Теперь, если я возьму массив
var a = [0,1,2];
И добавьте еще один элемент
a[4] = 4;
Я намеренно не определил a[3]
, и это также дает мне a[3]
как undefined
.
Вот сценарий, где это можно наблюдать: http://jsfiddle.net/ZUrvM/
Теперь, если я попытаюсь сделать то же самое в Java,
int[] a = new int[4];
a[0] = 0;
a[1] = 1;
a[3] = 3;
Затем я заканчиваю
a[2] = 0;
Вы можете видеть это на ideone: https://ideone.com/WKn6Rf
Причиной этого в Java я обнаружил, что четыре переменные определены при объявлении массива, и мы можем присваивать значения объявленному размеру массива.
Но в JavaScript, когда я объявляю массив размером 3, а затем добавляю 5-й элемент, почему он не считает, что 4-й элемент будет null
или 0
, если мы увеличили размер массива выше 4?
Почему я вижу это странное поведение в JavaScript, но не на других языках?