繁体   English   中英

Javascript 中的“全局”是 function 吗?

[英]Is 'global' a function in Javascript?

我正在努力研究 Javascript 中的闭包是什么。 根据 MDN,每次创建 function 时都会在 function 创建时间创建闭包。 但是,Stack Overflow 中的许多文章和答案都说闭包的概念需要内部 function 和外部 function 及其变量之间的关系。 所以,我想知道“全局”是否是在全局范围(或全局执行上下文)的运行时执行的 function 的那种。 如果“全局”是 function,我猜脚本中的所有函数都可能是内部函数。 如果您完全理解闭包和执行上下文,请回答我。 谢谢!

你的问题是一个非常真实的问题:)。 我从您的问题中得到的是,您的困惑在于 JavaScript 中的“全局”。 从您的问题中不清楚您是否需要在闭包和执行上下文方面的帮助,所以为了保持简短的回答,我将只关注“全局”。

所以 JavaScript 中的 global 是全局执行上下文。 它更像是运行代码的编译器。 如果您有任何编程语言的经验,请说 Java。 你可能与此有关。 你写函数的地方不是 function 本身。 所以我们可以有把握地说 global 不是 function 而是一个执行上下文。

同样,在全局执行上下文中定义的函数不是内部函数。 它们只是函数。

也许你对此感到困惑,因为你觉得全局声明的变量可以在全局概念中声明的 function 内部访问,这仅仅是因为 scope 是一个变量,与闭包无关。

当我们执行我们的代码时,JavaScript 引擎所做的第一件事就是创建一个全局执行上下文。 这与 function 执行上下文具有相同的目的,但在全局级别具有更多特殊性。 现在,一旦创建了 GEC - JS 引擎逐行移动并开始使用自己的 function 执行上下文执行其他函数!

因此,根据您的问题, global 只是一个执行上下文,在开始时仅创建一次,并具有一些额外的功能。

希望这可以消除您的疑问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM