Freecodecamp: Von `var` sollte abgeraten werden.

Erstellt am 13. Aug. 2016  ·  3Kommentare  ·  Quelle: freeCodeCamp/freeCodeCamp

Challenge Global Scope and Functions hat ein Problem.
Benutzeragent ist: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 .
Bitte beschreiben Sie, wie Sie dieses Problem reproduzieren können, und fügen Sie nach Möglichkeit Links zu Screenshots hinzu.

Mein Code:

// Declare your variable here
var myGlobal = 10;

function fun1() {
  // Assign 5 to oopsGlobal Here

}

// Only change code above this line
function fun2() {
  var output = "";
  if (typeof myGlobal != "undefined") {
    output += "myGlobal: " + myGlobal;
  }
  if (typeof oopsGlobal != "undefined") {
    output += " oopsGlobal: " + oopsGlobal;
  }
  console.log(output);
}

Wir müssen es6 let und const . var Variablendeklaration kann einen Fehler verursachen.

discussing

Hilfreichster Kommentar

@BKinahan Gut gesagt.

Wann man var verwendet und nicht, hängt nicht immer vom einzelnen Entwickler ab, aber meistens hängt es vom Team ab.

Obwohl ich keine Zeit gefunden habe, in der var nicht durch let oder const ich mit einem Ingenieur von OpenTable gesprochen, der kürzlich seine gesamte Codebasis überarbeitet hatte, um sie zu verwenden ES2015, und er erwähnte, dass es einen Fall gab, in dem let oder const die Ursache für einen Fehler war und var musste, aber er konnte sich nicht an die genauen Details erinnern warum das so war.

Ich denke nicht, dass var entmutigt werden sollte. Es ist besser, die Funktionsweise von var zu erklären und den Entwicklern die Wahl zu lassen, sobald sie auf ihrem Weg zur Erleuchtung weiter fortgeschritten sind.

Es gibt auch einige Seltsamkeiten bei let und const , die Sie, wenn Sie sich dessen nicht bewusst sind, durch einige Schleifen hindurchführen können (siehe: temporale Totzone ). Dies disqualifiziert let und const von der Verwendung, auch wenn es ärgerlich ist. Es bedeutet nur, dass das Grokken einer Sache genauso wichtig ist wie das Wissen einer Sache.

Alle 3 Kommentare

ES6-Funktionen, einschließlich let und const , werden in neuen Lehrplanthemen, die derzeit entwickelt werden, ausführlich behandelt (siehe hier ). Diese Herausforderungen gehen auch auf die Probleme ein, die durch das Scoping/Heben bei der Verwendung von var .

Im Moment dient diese Herausforderung als Einführung in das Scoping und einige der Probleme, auf die man achten sollte, wenn var verwendet wird, und enthält immer noch nützliche Informationen, da Camper wahrscheinlich auf Code aus anderen (älteren) Quellen stoßen, die dies tun Verwenden Sie var (zB Legacy-Code usw.), und daher ist dies eine nützliche Einführung in die besprochenen Probleme.

Es könnte ein Argument dafür geben, die Zeile zu entfernen

Sie sollten Ihre Variablen immer mit var deklarieren.

oder es mit einigen Vorbehalten zu ändern, um später etwas über let und const zu lernen, aber ich denke, diese Herausforderung ist für eine erste Einführung in das Thema in Ordnung.

cc @FreeCodeCamp/issue-moderators Gedanken?

@BKinahan Gut gesagt.

Wann man var verwendet und nicht, hängt nicht immer vom einzelnen Entwickler ab, aber meistens hängt es vom Team ab.

Obwohl ich keine Zeit gefunden habe, in der var nicht durch let oder const ich mit einem Ingenieur von OpenTable gesprochen, der kürzlich seine gesamte Codebasis überarbeitet hatte, um sie zu verwenden ES2015, und er erwähnte, dass es einen Fall gab, in dem let oder const die Ursache für einen Fehler war und var musste, aber er konnte sich nicht an die genauen Details erinnern warum das so war.

Ich denke nicht, dass var entmutigt werden sollte. Es ist besser, die Funktionsweise von var zu erklären und den Entwicklern die Wahl zu lassen, sobald sie auf ihrem Weg zur Erleuchtung weiter fortgeschritten sind.

Es gibt auch einige Seltsamkeiten bei let und const , die Sie, wenn Sie sich dessen nicht bewusst sind, durch einige Schleifen hindurchführen können (siehe: temporale Totzone ). Dies disqualifiziert let und const von der Verwendung, auch wenn es ärgerlich ist. Es bedeutet nur, dass das Grokken einer Sache genauso wichtig ist wie das Wissen einer Sache.

Vielen Dank für die Eingaben. Beides sind gute Punkte. Ich denke, das ist alles meinungsbasiert. Ich würde jedoch zu meiner Aussage stehen und würde sogar so weit gehen, die Verwendung unveränderlicher Daten zu predigen und Bibliotheken wie immutable.js oder mori zu verwenden, um unerwartete Datenmutationen zu verhindern. ️

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen