2015-08-15 17 views
16

Was genau ist der Unterschied zwischen der Verwendung von 'var' oder 'lassen' in Typoskript? Ich weiß, dass "let" erlaubt, dass die Variable weiter in einen Bereich definiert wird, ohne dass sie außerhalb dieses Bereichs verwendet wird. Das ist offensichtlich ein schöner Vorteil für Iteratoren in for-Schleifen. Ich weiß, dass dies eine ES6-Definition ist, daher sollte das Kompilieren zu ES6 in Bezug auf "var" und "let" fast identisch aussehen.'var' und 'let' in Typoskript 1.5

Aber, wenn es in ES5 Javascript kompiliert, das nicht unterstützt "lass", was genau passiert? Gibt es merkwürdig benannte Variablen, die der Compiler erstellt, damit die Verwendung der Variablen im Kontext der Typescript-Datei verhindert wird? Was passiert in Situationen, in denen Sie viele 'let'-Variablen in einer Funktion definieren? Gibt es einen Leistungseinfluss, um den ich mich kümmern sollte?

Grundsätzlich, was passiert, wenn Typoskript kompiliert Variablen zu ES5 Javascript?

+3

Ich denke nicht, dass dies eine gute Frage für Programmers.SE ist: diese Website ist über Softwareentwicklungskonzepte, aber Sie fragen nach einer bestimmten Implementierung Detail einer bestimmten Sprache. Wenn Sie interessiert wären, wie Compiler im Allgemeinen den lexikalischen Geltungsbereich implementieren könnten, wäre das vielleicht ein Thema (aber möglicherweise zu weit gefasst). Da Sie im Wesentlichen nach einem Programmiertool fragen, stimme ich der Migration zu Stack Overflow zu, was für diese Art von Frage besser geeignet scheint. – amon

+1

Ich denke, das ist eine gute Frage. – MarzSocks

Antwort

19

Der einfachste Weg, Antworten auf diese Art von Fragen zu finden, um es in der TypeScript Playground auszuprobieren.

TypeScript benennt die Variablen innerhalb des Blockbereichs um. Im Vergleich zur Verwendung regulärer Variablen, die mit var definiert wurden, gibt es keinen Leistungsaufwand.

Dieser Code:

var i = 0; 
for (let i = 0; i < 5; i++) {} 
i++; 

Compiliert zu:

var i = 0; 
for (var i_1 = 0; i_1 < 5; i_1++) { } 
i++; 

Here einige weitere Informationen über let ist.

+2

Sie haben Recht, das ist wahrscheinlich der beste Weg, sich in so etwas zu vertiefen. Interessanterweise, wenn Sie versuchen, eine var i_1 einzuwerfen, wird es automatisch in i_2 eingelassen. Irgendwie ordentlich. –

Verwandte Themen