2017-04-25 3 views
0

Funktion Scoping war völlig in Ordnung für mich seit 2 Jahrzehnten. Jetzt lese ich überall, dass ich let und const anstelle von var verwenden soll. Ich schätze, das liegt hauptsächlich daran, dass es ein neues Feature ist. Warum sollte ich den Blockumfang bevorzugen?Warum sollte ich den Block Scope anstelle des Funktionsumfangs verwenden?

+1

Da JS lange Zeit dafür kritisiert wurde, dass er keine Block-Scopes respektierte, die alle anderen (zumindest berühmten) Sprachen respektierten. Jetzt bewegt sich JS auf diese Sprachen zu, indem es viele Lücken füllt. –

+2

Sie sollten nicht, es sei denn, Sie haben einen guten Grund, dies zu tun. Ein guter Grund für die weitere Verwendung von * var * ist, dass es abwärtskompatibel ist. * const * und * let * schränken die Umgebung ein, in der der Code für sehr wenig Vorteile verwendet wird. Sie können ähnliche Vorteile von * strict mode * erhalten (der auch abwärtskompatibel ist). – RobG

+0

Sie können hier lesen, warum Sie verwenden sollten, lassen und const, es geht um "Variable hissen" http://StackOverflow.com/Questions/3725546/Variable-Hoisting –

Antwort

6

const hat den offensichtlichen Vorteil, dass es eine konstante Bindung ist. let hat eine temporäre Totzone, und es ist verboten, einen Identifikator im selben Umfang neu zu deklarieren, so dass es hilft, bestimmte Fehler zu vermeiden.

Abgesehen davon ist nichts falsch daran, var weiter zu verwenden, wenn Sie keinen Blockbereich benötigen.

+0

Const sind großartig, aber lassen Sie uns zu einigen interessanten Fehlern führen ... zum Beispiel fragt 'typeof' Blockvariable vor der Initialisierung führen zu Fehler ... – Akxe

+4

@Akxe: Und warum würden Sie nach dem Typ fragen, wenn die Variable nicht war initialisiert noch? Ich betrachte die Fehler, die für 'Let'-Fälle ausgelöst werden, als Feature. –

+0

Danke! Ich werde 'var' behalten und ich werde' Let' und 'Const' bei meinen Hobbyprojekten üben. – inf3rno

Verwandte Themen