全局作用域中,用const和let声明的变量不在window上,那到底在哪里?如何去获取?
在ES5中,顶层对象的属性和全局变量是等价的,var命令和function命令声明的全局变量,自然也是顶层对象。
<script>
var a = 12;
function f(){};
console.log(window.a);
console.log(window.f)
</script>
但ES6规定,var命令和function命令声明的全局变量,依据是顶层对象的属性,但let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。
代码如下:
<script>
let a = 12;
const b = 2;
console.log(window.a);
console.log(window.b)
</script>
在哪里?怎么获取?
在全局作用域中,用let和const声明的全局变量并没有在全局对象中,只是一个块级作用域中(script)。
怎么获取?在定义变量的块级作用域中就能获取啊,既然不属于顶层对象,那就不加window。
代码如下:
let a = 12;
const b = 2;
console.log(a);
console.log(b)