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?