Babels Leitfaden zu ES6 sagt:
let
ist das neuevar
.
Anscheinend besteht der einzige Unterschied darin, dass var
der Gültigkeitsbereich der aktuellen Funktion und let
der Gültigkeitsbereich des aktuellen Blocks festgelegt wird . Diese Antwort enthält einige gute Beispiele .
Ich kann keinen Grund für die Verwendung var
in ES6-Code erkennen. Selbst wenn Sie eine gegebene Variable auf die gesamte Funktion beschränken möchten, können Sie dies tun, let
indem 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 for
Block oder so etwas sehen wollen, dann können Sie das auch tun.
Mein Instinkt ist also, var
beim Schreiben von ES6-Code die Verwendung ganz einzustellen.
Meine Frage ist, irre ich mich dabei? Gibt es einen legitimen Fall, in dem var
es vorzuziehen wäre let
?
let
Anweisung 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 var
es klarer macht, als es einfach oben anzuordnen.
var
noch besteht, die Abwärtskompatibilität ist. Wäre das nicht so gewesen, hätten sie alles weggenommen var
oder gar nicht erst eingeführt let
und stattdessen die Semantik var
dahingehend geändert, wie es wohl die ganze Zeit hätte sein sollen.
var
scheinen mir gering und reichen nicht aus, um eine dritte Art von Variable zu rechtfertigen, die herumspringt. Sie können eine let
Funktion einfach auf eine ganze Funktion ausdehnen, indem Sie sie oben auf die Funktion setzen. Dies ist in der Absicht viel deutlicher als das Schreiben var
in 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 let
auf 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, var
scheinen 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.
var
dieser Variablen als bewusster Indikator für die gesamte Funktion eine nützliche "selbstdokumentierende" Konvention sein könnte .