范围下的“脚本”类别

问题描述 投票:0回答:2

我正在 Chrome 开发工具中检查一个简单脚本的执行上下文。我注意到在断点或调试器语句上,chrome 开发工具在范围部分显示一个新类别。它有:

  • 本地
  • 脚本
  • 全球

我相信脚本与

let
const
的存储方式有关,因为它们没有附加到全局窗口对象。然而,我的理解是它们仍然在“全局范围”内,但不绑定到全局对象。

我相信“Script”标签代表了这个想法,但为什么选择“script”这个名字呢?

我检查了文档,但不幸的是,它没有提到“脚本”是什么。

这是我的示例的屏幕截图:

有人对所使用的命名约定有任何了解吗?

javascript ecmascript-6 google-chrome-devtools
2个回答
1
投票

因为 scirpt 范围内的变量可以在另一个脚本标签(包括外部脚本标签)中访问。

参见这个问题

顺便说一句,Firefox 的开发工具简单地将这样的范围称为“块”。 例如:

var a = 0;
let b = 1;
function test() {
  function test2() {
    let c = 2;
  }
  test2();
}
test();

在 Chrome 开发者工具中看起来像这样: in Chrome devtools 在 Firefox 开发工具中看起来像这样: in Firefox devtools


0
投票

在 JavaScript 中,Let 和 const 存储在单独的内存空间中,而不是存储在全局内存中。这里的单独内存空间显示在脚本部分。

额外:Let 和 const 被提升并在单独的内存空间中获取内存,但在它们被初始化之前,它们被称为“临时死区

示例:

console.log(x); // line1
.
.
.
let x = 10; // line20
console.log(x); // line21

在第 1 行:x 被提升并获得内存空间,但尚未初始化

第20行:x已初始化

因此,在第 1 行到第 20 行之间:x 被认为处于“暂时死区”,如果尝试访问,将会给出错误。

© www.soinside.com 2019 - 2024. All rights reserved.