Ich spiele mit einer sinnlosen Logik herum, um ES6 besser zu verstehen, und habe ein merkwürdiges Vorkommnis bemerkt, als ich eine Konstante definiert habe.ES6 Warum kann ich eine Konstante neu zuweisen, wenn sie in einer Schleife definiert ist?
Es scheint möglich, eine konstante Zuordnung zu ändern, wenn in einer Schleife definiert:
"use strict";
for(const i=0;i<10;i++){ //seting constant in loop
console.log(i); //is reassigned and incremented 0,1,2,3...
}
const e = 0; //setting constant outside loop
for(;e<10;e++){ //cannot reassign constant
console.log(e);
}
Ist das erwartete Verhalten und kann jemand etwas Licht auf, warum dies der Fall ist, ist Deklaration in der Schleife anders?
Update von Statements/const
This declaration creates a constant that can be global or local to the function in which it is declared. Constants are block-scoped.
Wow, habe gerade dies in Chrome Version 40.0.2214.94 versucht und es erzeugt eine Endlosschleife, vielleicht weil die Konstante nie stummgeschaltet ist. Welchen Browser benutzen Sie? – Sarcadass
Das bedeutet wahrscheinlich, Chrom hat es richtig, indem es nicht neu zugewiesen (? Aber sollte wahrscheinlich einen Fehler werfen) und hebt immer noch die Konstante. In Ihrem Fall scheint es, als ob die "const" wie "Let" funktioniert https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#let_in_loops –
In Firefox bekomme ich 'TypeError: redeclaration von var i' für das erste Beispiel – Kapep