Jetzt denke ich, dass es eine bessere Zuordnung von Variablen zu einem Block von Anweisungen mit let
:
function printnums()
{
// i is not accessible here
for(let i = 0; i <10; i+=)
{
console.log(i);
}
// i is not accessible here
// j is accessible here
for(var j = 0; j <10; j++)
{
console.log(j);
}
// j is accessible here
}
Ich denke, dass die Leute anfangen werden, let hier zu verwenden, so dass sie in JavaScript ein ähnliches Scoping haben werden wie in anderen Sprachen, Java, C#, usw.
Menschen mit nicht ein klares Verständnis über Scoping in JavaScript verwendet, um den Fehler früher zu machen.
Das Heben wird nicht unterstützt durch let
.
Mit diesem Ansatz werden in JavaScript vorhandene Fehler beseitigt.
Siehe ES6 im Detail: let und const um sie besser zu verstehen.
133 Stimmen
ECMAScript ist der Standard und
let
ist enthalten in der Entwurf der 6. Auflage und wird höchstwahrscheinlich in der endgültigen Spezifikation enthalten sein.12 Stimmen
Véase kangax.github.io/es5-compat-table/es6 für eine aktuelle Unterstützungsmatrix der ES6-Funktionen (einschließlich let). Zum Zeitpunkt der Erstellung dieses Artikels unterstützen Firefox, Chrome und IE11 diese Funktion (obwohl ich glaube, dass die Implementierung von FF nicht ganz Standard ist).
37 Stimmen
Die längste Zeit wusste ich nicht, dass Variablen in einer for-Schleife auf die Funktion, in die sie eingeschlossen war, skaliert wurden. Ich erinnere mich, dass ich dies zum ersten Mal herausfand und dachte, es sei sehr dumm. Jetzt weiß ich allerdings, wie die beiden aus unterschiedlichen Gründen verwendet werden können und dass man in manchen Fällen eine Variable in einer for-Schleife verwenden möchte, ohne dass sie auf den Block skaliert ist.
1 Stimmen
In dem Maße, wie sich die Unterstützung von ES6-Funktionen verbessert, verlagert sich der Schwerpunkt der Frage nach der Akzeptanz von ES6 von der Unterstützung von Funktionen auf Leistungsunterschiede. Als solches, Hier ist eine Website, die ich gefunden Benchmarking Leistungsunterschiede zwischen ES6 und ES5 . Beachten Sie, dass sich dies im Laufe der Zeit wahrscheinlich ändern wird, da die Engines für ES6-Code optimiert werden.