kompilering - 'var' och 'let' i Typescript 1.5


Vad exakt är skillnaden mellan att använda antingen 'var' eller 'let' i Typescript? Jag vet att 'let' tillåter att variabeln definieras längre in i ett scope utan att den används utanför det specifika scope:et. Det är uppenbarligen en trevlig fördel för iteratörer i for-loopar. Jag vet att detta är en ES6-definition, så kompilering till ES6 bör se nästan identisk ut när det gäller 'var' och 'let'.

Men när det kompileras ner till ES5 JavaScript som inte stöder 'let', vad händer exakt? Finns det konstigt namngivna variabler som kompilatorn skapar för att förhindra att man använder dessa variabler i kontexten av Typescript-filen? Vad händer i situationer där du definierar många 'let'-variabler i en funktion? Påverkar det prestandan på något sätt som jag borde oroa mig för?

I huvudsak, vad händer när TypeScript kompilerar let-variabler till ES5 JavaScript?

Svar #1

Det enklaste sättet att hitta svar på den här typen av frågor är att prova det i TypeScript Playground.

TypeScript byter namn på variablerna inom blockomfånget. Det finns ingen prestandapåverkan jämfört med att använda vanliga variabler definierade med var.

Den här koden:

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

Kompileras till:

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

Här är lite mer information angående let.

Relaterade artiklar