请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于作用域链的问题

老师,既然自由变量是按定义时的作用域向上查找,那作用域链是函数定义时生成的,还是调用时生成的?

正在回答 回答被采纳积分+3

2回答

双越 2023-01-04 09:04:49

作用域链不需要生成,函数定义好之后,作用域链就存在了,函数执行时即可根据链来寻找。

0 回复 有任何疑惑可以回复我~
  • 好的,谢谢老师。但是作用域链最前端总是指向当前执行环境上下文,也就是说当函数调用时,会将函数此时的活动对象推到作用域链的最前端是嘛。我自己理解是作用域链的创建有两个部分:函数创建的时候,保存的是根据词法所生成的作用域链,函数执行的时候,会复制这个作用域链,作为自己作用域链的初始化,然后根据环境生成变量对象,然后将这个变量对象,添加到这个复制的作用域链,保证当前作用域链的最前端指向的是当前执行环境的变量对象,这才完整的构建了自己的作用域链
    回复 有任何疑惑可以回复我~ 2023-01-05 16:29:23
提问者 weixin_慕的地0476602 2023-01-03 17:49:43

我自己理解是作用域链的创建有两个部分:函数创建的时候,保存的是根据词法所生成的作用域链,函数执行的时候,会复制这个作用域链,作为自己作用域链的初始化,然后根据环境生成变量对象,然后将这个变量对象,添加到这个复制的作用域链,保证当前作用域链的最前端指向的是当前执行环境的变量对象,这才完整的构建了自己的作用域链。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信