В чем разница между неинициализированными элементами в массиве в JavaScript и Java?

Я просто играл с 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, а не в других языках?

Ответы на вопрос(3)

Ваш ответ на вопрос