为什么块A会导致ReferenceError?
const something = 'something';
console.log ();
try {
// Block A
{
const something = something;
}
} catch (e) { console.log(e); }
console.log ();
// Block B
{
const something = 'somethingElse';
}
这可以防止用一个属性遮蔽变量。
答案 0 :(得分:0)
因为const
变量are hoisted,并且您正试图在其自己的临时死区中访问它。有三种方法可以解决这个问题:
const
,不要创建本地范围 - 只需在块内重新分配变量即可。此解决方案可能并不适用于所有地方。使用IIFE:
const something = 'something';
(function(something) {
// ^^^^^^^^^ inner scope
…
}(something));
//^^^^^^^^^ outer scope