2
如果我在catch塊中創建一個變量,這個塊級作用域是什麼?試試看有沒有塊級的範圍?
似乎在全球範圍內創建它。
我還以爲是塊級的,因爲不transpilers轉換讓語句的try/catch?
try {
throw Error("test");
} catch (e) {
var x = 15;
console.log(x);
}
console.log(x);
如果我在catch塊中創建一個變量,這個塊級作用域是什麼?試試看有沒有塊級的範圍?
似乎在全球範圍內創建它。
我還以爲是塊級的,因爲不transpilers轉換讓語句的try/catch?
try {
throw Error("test");
} catch (e) {
var x = 15;
console.log(x);
}
console.log(x);
如果我在catch塊創建變量,這是塊級範圍?
如果您創建一個塊範圍變量(using let
)它是。
似乎在全球範圍內創建它。
您正在使用var
,它始終在當前函數的作用域中創建變量(如果不在函數中,則爲全局變量)。
沒有,'catch'子句中'var'聲明是在功能範圍。然而,你可以使用'let'(在ES2015中)。 – Pointy
所以在es6之前從來沒有使用塊級變量的黑客?我以爲我看了一個關於它的視頻。 – runners3431
其實有是'趕上()'一個特別的範圍規則 - 在「參數」爲'catch'塊的作用域是該塊,幾乎就像是一個函數參數。 – Pointy