據我所知,ES6和TypeScript都支持塊級別範圍,但是當定位ES3和ES5時,輸出應該是功能級別範圍。我認爲,爲什麼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;
}
的transpiler輸出:
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;
}
任何有識之士,非常感謝。謝謝!
但輸出ES3/5使用的讓利,而不是var。所以它可以將聲明移到頂端。但是在自動生成的代碼中這樣做並不重要,因爲它已經被檢查過正確性。 –
Durrr,我的意思是它使用var,不讓... –