一、 let const声明的变量不会挂载到全局window对象上,var声明的变量会挂载到window对象上。 这里我举两个例子说明一下:
var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined
const a = 10;
console.log('a' in window, window.a);// false undefined
var a = 10;
console.log('a' in window, window.a);// true 10
那么也有一个疑问, 全局声明变量的时候 let const 存储到哪里了呢?
可以看到声明的变量在作用域里面
二、let const 会有暂时性死区 出现暂时性死区会报错如下图:
出现 ReferenceError 即出现了暂时性死区
另一个例子:
let foo = 19;
function do_something() {
console.log(bar); // undefined
console.log(foo); // ReferenceError
var bar = 1;
let foo = 2;
}
do_something();
即使外层作用域里有foo,仍然有暂时性死区。