首先先看代码

        let alet = 20;        const aconst = 10;        var avar = 15;        console.log(alet);        console.log(aconst);        console.log(avar);        debugger;

运行截图如下
0

会发现,let和const 定义的变量都属于块级作用域,而var为全局(顶级)作用域。
因此var 定义的变量是可以通过window访问的,let和const则不支持。

 let alet = 20;        const aconst = 10;        var avar = 15;        {            var ainvar = 10;            const ainconst = 5;            {                const ainconst2 = 11;            }        }        debugger;        console.log(ainvar);        console.log(ainconst);        console.log(ainconst2);        debugger;

把代码稍微改良一下,会发现,var是可以自动升域的,而const和let是不行的,如果在块内用const定义,外层是无法访问,而var可以。
1

收藏 打印