Illegal Shadowing (Shadowing let with var)

问题描述

考虑以下 JavaScript 中的阴影示例:

let a = 99;                                                                                                             
{
        var a = 10;
        let b = 11;
        const c = 200;
        console.log(a);
}
console.log(a);

这里出现以下错误:

SyntaxError: Identifier 'a' has already been declared

但在以下情况下,没有语法错误,代码完全有效。

var a = 99;                                                                                                             
{
    let a = 10;
    let b = 11;
    const c = 200;
    console.log(a);
}
console.log(a);

在第二种情况下,var a 在全局范围内声明,而 let a 在块范围内声明。 但是为什么这在第一种情况下无效? 在那里,let a 将在单独的范围内声明,而 var a 应在全局范围内声明。 为什么这个案例无效?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)