Was ist der Unterschied zwischen nicht initialisierten Elementen in einem Array in JavaScript und Java?

Ich habe nur mit JavaScript rumgespielt und bin mit einem einfachen Programm hängen geblieben.

Ich habe ein Array wie in JavaScript deklariert

var a = [0, 1, 2];

Da es in JavaScript keine feste Größe für ein Array gibt und wir dem Array weitere hinzufügen können, habe ich dem Array eine weitere Ganzzahl hinzugefügt.

a[3] = 3;

Und wie erwartet, wenn ich versuche, darauf zuzugreifena[4] Ich werde es auf jeden Fall so bekommenundefined.

Nun, wenn ich ein Array nehme

var a = [0,1,2];

Und füge ein weiteres Element hinzu

a[4] = 4;

Ich habe absichtlich nicht definierta[3]und das gibt mir aucha[3] wieundefined.

Hier ist eine Geige, wo dies beobachtet werden kann:http://jsfiddle.net/ZUrvM/

Wenn ich jetzt dasselbe in Java versuche,

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

a[3] = 3;

Dann lande ich bei

a[2] = 0;

Sie können dies auf ideone sehen:https://ideone.com/WKn6Rf

Der Grund dafür in Java, den ich gefunden habe, ist, dass die vier Variablen beim Deklarieren des Arrays definiert werden und wir nur der deklarierten Größe des Arrays Werte zuweisen können. Aber wenn ich in JavaScript ein Array der Größe 3 deklariere und dann das 5. Element hinzufüge, warum wird das 4. Element nicht als solches betrachtet?null oder0 Haben wir die Array-Größe auf über 4 erhöht?

Warum sehe ich dieses seltsame Verhalten in JavaScript, aber nicht in anderen Sprachen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage