Babels Leitfaden zu ES6 sagt:
letist das neuevar.
Anscheinend besteht der einzige Unterschied darin, dass varder Gültigkeitsbereich der aktuellen Funktion und letder Gültigkeitsbereich des aktuellen Blocks festgelegt wird . Diese Antwort enthält einige gute Beispiele .
Ich kann keinen Grund für die Verwendung varin ES6-Code erkennen. Selbst wenn Sie eine gegebene Variable auf die gesamte Funktion beschränken möchten, können Sie dies tun, letindem Sie die Deklaration am oberen Rand des Funktionsblocks platzieren. Dies ist das, was Sie tun sollten var, um den tatsächlichen Umfang anzugeben. Und wenn Sie etwas feiner in einem forBlock oder so etwas sehen wollen, dann können Sie das auch tun.
Mein Instinkt ist also, varbeim Schreiben von ES6-Code die Verwendung ganz einzustellen.
Meine Frage ist, irre ich mich dabei? Gibt es einen legitimen Fall, in dem vares vorzuziehen wäre let?
letAnweisung ganz oben auf eine Funktion setzen, ist es meines Erachtens genauso offensichtlich, dass Sie beabsichtigten, sie auf die gesamte Funktion zu übertragen. Ich glaube nicht, dass die Verwendung vares klarer macht, als es einfach oben anzuordnen.
varnoch besteht, die Abwärtskompatibilität ist. Wäre das nicht so gewesen, hätten sie alles weggenommen varoder gar nicht erst eingeführt letund stattdessen die Semantik vardahingehend geändert, wie es wohl die ganze Zeit hätte sein sollen.
varscheinen mir gering und reichen nicht aus, um eine dritte Art von Variable zu rechtfertigen, die herumspringt. Sie können eine letFunktion einfach auf eine ganze Funktion ausdehnen, indem Sie sie oben auf die Funktion setzen. Dies ist in der Absicht viel deutlicher als das Schreiben varin einen Block (damit sie aus diesem Block herausgezogen wird und Sie sie dann außerhalb des Blocks verwenden können) - seltsam). Er warnt davor, dass, wenn Sie eine letauf eine Funktion setzen, "es nur die Position ist, die den Unterschied signalisiert, und nicht die Syntax", aber ich denke, das ist eine gute Sache.
var. Die Beispiele, die er zur Aufbewahrung vorstellt, varscheinen erfunden zu sein - und beruhen auf schwerwiegenden Codierungsfehlern. Es ist viel besser, auf einen Fehler zu stoßen und gezwungen zu sein, solche Fehler zu beheben, als Sprachfunktionen zu verwenden, mit denen man davonkommt! Was kommt als nächstes, raten Sie, alles in einen Versuch / Fang zu wickeln, um Abstürze zu vermeiden? Der Rest dieses Links ist gut, aber ich stimme diesem speziellen Teil überhaupt nicht zu.
vardieser Variablen als bewusster Indikator für die gesamte Funktion eine nützliche "selbstdokumentierende" Konvention sein könnte .