开发者社区> 问答> 正文

如何简单解释javascript中的scope chain?

看了一些资料还是不太理解,有没有简单通俗一点的解释。

展开
收起
a123456678 2016-03-11 16:47:10 1971 0
1 条回答
写回答
取消 提交回答
  • 通俗的解释:

    想象一下每个函数执行的时候,都会在背地里建立一个对象V。函数内定义的所有局部变量(包括函数参数)都放在这个对象上,作为这个对象的属性。就是说我们访问函数的局部变量时,实际上就是访问的对象V的一个属性而已。
    这个对象V经常被叫做变量对象,顾名思义就是存放变量的对象。
    每个函数在运行时都会自动建立一个变量对象V。而且内部函数的变量对象里面有一个指针指向外部函数的变量对象。
    假设由于这个指针的存在,导致若干个嵌套了N层的函数在运转时形成了一个链表结构。这个链表经常被叫做作用域链。
    注:

    注意变量对象和作用域链都是运行时概念。而且是JS引擎的内部机制,从代码的角度是不可见的。
    如果看到这里你还不能彻底明白,那么你应该去看一下数据结构中的链表那一节了。

    2019-07-17 18:59:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载