作用域链什么时候确定的

啊,作用域链这个话题说起来有点棘手。我在过去的一次技术交流会上听到有人提出这个问题。我们需要详细讨论一下。一般来说,JavaScript 中的作用域链是在创建函数时定义的,而不是在调用函数时定义的。
例如,2023年我在北京参加的一次未来技术分享会上,有朋友问:“作用域链是在定义函数时确定的,还是在调用函数时确定的?”我当时回答说是定义函数的时候定义的。因为当你定义一个函数时,它的作用域就已经定义好了,包括父作用域、全局作用域等。
但是需要注意的是,如果你在一个函数内部定义了另一个函数,那么内层函数的作用域链将会包含外层函数的作用域。该规则也在创建函数时指定。
不管怎样,你能弄清楚。如果还有疑问,可以回顾一下。我还在思考这个问题。

作用域字符串是在创建函数时确定的。
这是一个陷阱,全局变量是在函数内访问的,不要信任局部变量,不要这样做。
变量提升发生在声明函数时,而不是分配时。
作用域字符串在函数执行之前就已确定。

函数创建时确定。

相关推荐