Я понимаю, что ES6 и TypeScript поддерживают область видимости на уровне блоков, но при нацеливании на ES3 и ES5 вывод должен быть областью видимости на функциональном уровне. Я думаю, что должна быть логика, почему TypeScript не поднимает переменные... и я не сталкиваюсь с проблемой, мне просто любопытно, почему он не поднимает переменные.
Например, учитывая следующий TypeScript:
function seed(length: number, multiplier: number): number[] {
let result: number[] = [];
for(let i: number = 0; i < length; i++) {
let n: number = i * multiplier;
result.push(n);
}
return result;
}
Транспилятор выдает:
function seed(length, multiplier) {
var result = [];
for (var i = 0; i < length; i++) {
var n = i * multiplier;
result.push(n);
}
return result;
}
Я ожидал, что в результате объявления переменных будут подняты в начало функции. Выглядит примерно так:
function seed(length, multiplier) {
var
i, n,
result = [];
for (i = 0; i < length; i++) {
n = i * multiplier;
result.push(n);
}
return result;
}
Любое понимание очень ценится. Спасибо!