看了一些资料还是不太理解,有没有简单通俗一点的解释。
通俗的解释:
想象一下每个函数执行的时候,都会在背地里建立一个对象V。函数内定义的所有局部变量(包括函数参数)都放在这个对象上,作为这个对象的属性。就是说我们访问函数的局部变量时,实际上就是访问的对象V的一个属性而已。
这个对象V经常被叫做变量对象,顾名思义就是存放变量的对象。
每个函数在运行时都会自动建立一个变量对象V。而且内部函数的变量对象里面有一个指针指向外部函数的变量对象。
假设由于这个指针的存在,导致若干个嵌套了N层的函数在运转时形成了一个链表结构。这个链表经常被叫做作用域链。
注:
注意变量对象和作用域链都是运行时概念。而且是JS引擎的内部机制,从代码的角度是不可见的。
如果看到这里你还不能彻底明白,那么你应该去看一下数据结构中的链表那一节了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。