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.
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. ️
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 durchlet
oderconst
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 demlet
oderconst
die Ursache für einen Fehler war undvar
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 vonvar
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
undconst
, die Sie, wenn Sie sich dessen nicht bewusst sind, durch einige Schleifen hindurchführen können (siehe: temporale Totzone ). Dies disqualifiziertlet
undconst
von der Verwendung, auch wenn es ärgerlich ist. Es bedeutet nur, dass das Grokken einer Sache genauso wichtig ist wie das Wissen einer Sache.