首先先看代码
let alet = 20;
const aconst = 10;
var avar = 15;
console.log(alet);
console.log(aconst);
console.log(avar);
debugger;
运行截图如下
会发现,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可以。