Qual é a diferença entre itens não inicializados em uma matriz em JavaScript vs Java?

Eu estava apenas brincando com JavaScript e fiquei preso a um programa simples.

Eu declarei uma matriz em JavaScript como

var a = [0, 1, 2];

Então, como não há tamanho fixo para uma matriz em JavaScript e podemos adicionar mais à matriz, adicionei outro número inteiro à matriz.

a[3] = 3;

E como esperado Se eu tentar acessara[4] Definitivamente vou conseguirundefined.

Agora, se eu pegar uma matriz

var a = [0,1,2];

E adicione outro elemento

a[4] = 4;

Eu não intencionalmente definia[3], e isso também me dáa[3] Comoundefined.

Aqui está um violino onde isso pode ser observado:http://jsfiddle.net/ZUrvM/

Agora, se eu tentar a mesma coisa em Java,

int[] a = new int[4];
a[0] = 0;
a[1] = 1;

a[3] = 3;

Então eu acabo com

a[2] = 0;

Você pode ver isso no ideone:https://ideone.com/WKn6Rf

A razão para isso em Java que encontrei é que as quatro variáveis são definidas ao declarar a matriz e só podemos atribuir valores ao tamanho declarado da matriz. Mas em JavaScript, quando declaro uma matriz de tamanho 3 e adiciono o 5º elemento, por que ele não considera o 4º elementonull ou0 se aumentamos o tamanho da matriz para além de 4?

Por que vejo esse comportamento estranho em JavaScript, mas não em outros idiomas?

questionAnswers(3)

yourAnswerToTheQuestion