作用域链和私有上下文

函数堆
  • 把函数体中的代码当做字符串存储到堆中"代码字符串" => 创建函数不执行,函数没啥用
  • 堆中有函数的形参,代码字符串
  • 函数也是对象,他也有自己的键值对(name: "fn", lenth: 1, property: {}, __proto__: {})
  • 创建函数的时候,就定义了函数的作用域=>当前函数所在的上下文
  • 函数执行:形成一个全新的私有上下文,供代码执行(进栈执行)
  • 函数进栈执行,如果当栈中有一个没有被释放的上下文则将这个压到栈底
  • 代码执行之前先创建一个私有变量对象AO(FN),在初始化作用域链(scopeChain),<EC(FN),..., EC(G)>,首先是自己所在的上下文函数作用域,链向当前方法函数所在的作用域
  • 初始化this指向
  • 初始化实参集合Arguments
  • 形参赋值
  • 代码执行过程中, 遇到一个变量,先看是否为自己的私有变量(在自己的变量对象中有没有),是私有则操作都是自己的;不是私有,按照作用域链找上级上下文中是否存在,...,一直到全局上下文为止
  • 上下文中的代码执行完,就会被出栈(释放)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容