【问题标题】:Is 'global' a function in Javascript?'global' 是 Javascript 中的一个函数吗?
【发布时间】:2021-05-16 12:19:07
【问题描述】:
我正在努力研究 Javascript 中的闭包是什么。
根据 MDN,每次创建函数时都会在函数创建时创建闭包。
但是 Stack Overflow 的很多文章和答案都说闭包的概念需要内部函数和外部函数及其变量之间的关系。
所以,我想知道“全局”是否是一种在全局范围(或全局执行上下文)运行时执行的函数。
如果'global'是一个函数,我猜脚本中的所有函数都可能是内部函数。
如果您完全理解闭包和执行上下文,请回答我。谢谢!
【问题讨论】:
标签:
javascript
closures
executioncontext
【解决方案1】:
您的问题是一个非常真实的问题:)。我从您的问题中得到的是,您的困惑在于 JavaScript 中的“全局”。从您的问题中不清楚您是否需要在闭包和执行上下文方面的帮助,因此为了简短回答,我将只关注“全局”。
所以 JavaScript 中的 global 是全局执行上下文。它更像是运行代码的编译器。
如果您有任何编程语言的经验,请说 Java。你可能与此有关。你写函数的地方不是函数本身。所以我们可以有把握地说 global 不是一个函数,而是一个执行上下文。
同样,在全局执行上下文中定义的函数不是内部函数。它们只是函数。
也许你对此感到困惑,因为你觉得全局声明的变量可以在全局概念中声明的函数内部访问,这仅仅是变量的作用域,与闭包无关。
【解决方案2】:
当我们执行代码时,JavaScript 引擎首先要做的事情之一就是创建一个全局执行上下文。这与函数执行上下文具有相同的目的,但在全局级别具有更多特殊性。现在,一旦创建 GEC - JS 引擎逐行移动并开始使用自己的函数执行上下文执行其他函数!
因此,根据您的问题,全局只是一个执行上下文,在开始时仅创建一次,并具有一些额外的功能。
希望这可以消除您的疑问。