类别:js / 日期:2023-03-29 / 浏览:507 / 评论:0

在 ES5 中,顶层对象的属性和全局变量是等价的,var 命令和 function 命令声明的全局变量,自然也是顶层对象。


var a = 12;
function f(){};
console.log(window.a);
// 12console.log(window.f);
// f(){}

但 ES6 规定,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性,但 let 命令、const 命令、class 命令声明的全局变量,不属于顶层对象的属性。


let aa = 1;
const bb = 2;
console.log(window.aa);
// undefined
console.log(window.bb);
// undefined
在哪里?怎么获取?通过在设置断点,看看浏览器是怎么处理的:




通过上图也可以看到,在全局作用域中,用 let 和 const 声明的全局变量并没有在全局对象中,只是一个块级作用域(Script)中

怎么获取?在定义变量的块级作用域中就能获取啊,既然不属于顶层对象,那就不加 window(global)呗。

let aa = 1;
const bb = 2;
console.log(aa);
// 1
console.log(bb);
// 2





版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

«    2023年11月    »
12345
6789101112
13141516171819
20212223242526
27282930

最新留言