javascript - 请教作用域与变量对象的关系◔ ‸◔?

查看:118
本文介绍了javascript - 请教作用域与变量对象的关系◔ ‸◔?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

犀牛书和红宝书中都没有对作用域的概念进行解释。对作用域的概念有些模糊。
汤姆大叔 的博客中解释了 变量对象 的含义,是JavaScript用来保存变量和函数的一个机制,文中说:

在具体实现层面(以及规范中)变量对象只是一个抽象概念

而在这篇文章中,却说:

变量对象成为作用域这个抽象概念的实体

另外,在segmentfault用户学习笔记中看到这样的理解:

我的理解是,作用域链是由一个一个变量对象链接起来的一个链,整个作用域链构成了当前执行环境中变量和函数可访问的范围,即作用域

请问大家:

  1. 作用域到底指的是什么?和变量对象的关系是什么?

  2. 变量对象与作用域,到底谁是谁的抽象概念?谁是具体实现?

谢谢回答。

解决方案

  1. 所以说啊……没有基础就开始看这些非常理论非常形式化的东西很容易把人搞晕……我不是贬低楼主,楼主有求知欲是好事情,也没有囫囵吞枣的接受他人的说法,这点挺好的,只是没有必要在这些文章上花太多时间。

  2. 也并不是说写那些文章的人写的不对,而是他们看待问题的角度并不一样,并且穿插了很多自己的想象。

  3. 他们设法不牵扯到具体实现,而是从纯粹抽象的语言层面来解释这个问题,自然就变得有点五花八门,看的人有点摸不着头脑。

  4. 这个东西实际上在计算机系有一门专门的课程《编译原理》,有兴趣你可以去翻翻公开课,或者看看这本书:编译原理

  5. 《你不知道的JS》系列的第二部《作用域与闭包》,就简单的从编译原理的角度简单的介绍了这个问题,相比上面那本大部头,这本书可能更容易让人接受吧。

这篇关于javascript - 请教作用域与变量对象的关系◔ ‸◔?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆