当前位置:  开发笔记 > 编程语言 > 正文

全局let变量存储在哪里?

如何解决《全局let变量存储在哪里?》经验,为你挑选了1个好方法。

我在全局范围内创建了一个navigator变量,并使用let关键字为其分配一个字符串.

// in a browser
    let navigator = "Hello!";
    console.log(navigator );                       // "Hello!"
    console.log(window.navigator === navigator );  // false

这里的let navigator价值影响了window.navigator.但我很好奇知道let navigator存储的确切位置?



1> T.J. Crowder..:

因为您使用let而不是var,它将存储在与全局词法环境对象关联的声明性环境记录中,而不是存储在全局对象本身中.环境记录和词汇环境对象是规范机制,不能直接在代码中访问(因此它们的实际实现可能因JavaScript引擎而异).

这是一个概念 - 不是全局对象属性的全局变量 - 是从ES2015开始引入的新东西; 在此之前,所有全局变量都是全局对象的属性.作为ES2015,全球层面的let,const以及class标识绑定不举行的全球目标上,而是在一个单独的声明环境记录.

环境记录和词汇环境对象与在函数中存储局部变量使用的机制相同(在ES2015 +和ES5及更早版本中).

其全局方面在§8.2.3 - SetGlobalRealmObject中定义,后者又引用了§8.1.2.5 - NewGlobalEnvironment(G,thisValue).

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有