Okay, hier ist eine Klasse mit einem Array mit sechs Elementen im Konstruktor.Warum scheinen eingebettete Klassenschleifen unterschiedlichen Zuordnungsregeln zu folgen?
class forLoopProblem {
constructor() {
this.a = [5,8,7,4,6,18];
}
Was ich tun möchte, ist die Länge des Arrays verwenden, um die Anzahl der Iterationen in der for
Schleife unterhalb
iterate(ap1) {
for (i = 0; i <= this.a.length; i++) {
console.log(i);
}
}
}
var internalVar = new forLoopProblem();
Leider besagt internalVar.iterate()
erzeugt eine Ausnahme zu begrenzen, dass a
nicht definiert ist.
log() {
console.log(this.a.length);
console.log(this.a);
}
}
var internalVar = new forLoopProblem();
Aber wenn a
nicht definiert ist, warum dann nicht internalVar.log()
verhalten sich wie erwartet, 6
Druck zusammen mit dem Inhalt des Arrays auf der Konsole?
Zuerst dachte ich vielleicht 6
ist eine Zeichenfolge, die in eine ganze Zahl konvertiert werden muss, bevor die Schleife Zuordnung erkennt. Also habe ich versucht parseInt()
, aber das hat nicht funktioniert. Und trotzdem sagt die Ausnahme, dass die Variable nicht definiert ist, also glaube ich nicht, dass es ein Parsing-Problem ist.
I kann sogar a
verwenden, um die anfängliche Iterationsvariable bis 6 zuzuordnen, etwa so:
for (i = this.a.length; i <= 10; i++) {
6
, zu produzieren 7
, 8
, 9
und 10
als Konsolenausgang.
Also was gibt es mit der Limiter-Spezifikation?
Bitte beheben Funktioniert * alle * die Fehler im Code, bevor es hier veröffentlichen. – Bergi
Ich sehe nur einen, wo ich falsch geschrieben habe. Und solange es konsistent ist, sollte das egal sein. –
'iterate',' interate', 'lenth' ... Und ich hoffe, dass die vergessene Deklaration der' i'-Variable ebenfalls ein Tippfehler ist. – Bergi