执行环境及作用域、变量对象、作用域链、闭包

一:执行环境及作用域 和 变量对象

执行环境是javascript中最为重要的一个概念。每个执行环境都有一个与之关联的变量对象(保存执行环境中所有定义的变量和函数)。二:

当代码在执行环境中执行时,会创建一个作用域链。作用域链本质是一个指向变量对象的指针列表。

如果执行环境是函数,则将其活动对象(最开始时只包含一个变量->argument对象)作为变量对象。ps:argument对象在全局环境中是不存在的.

(基于2条件下)作用域链中的下一个变量对象来自外部环境,而再下一个变量对象则来自下下个外部环境。这样,一直延续到全局执行环境;全局执行环境的变量对象始终都是作用域链中的最后一个对象。

三:js没有块级作用域**</pre>

注:在js中if语句中的变量申明会将变量添加到if外部的执行环境中(当前是指window变量);此时window变量对象中有一个值是 color = 'blue'

注:在js中for循环结束后依然会存在循环外部的执行环境中,即window变量对象有 i = 10四:

  闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的常见方式,就是在一个函数内部创建另一个函数。

//创建函数

//调用函数

注:createComparisonFunction()函数返回后,其执行环境的作用域链会被销毁,但它的活动对象仍然会留在内存中,匿名函数的作用域链仍然在引用这个活动对象

以上是作用域链的这种配置机制引出了一个副作用,即闭包只能获取外部函数任何变量的最后一个值

修改:

最后

“相信有很多想学前端的小伙伴,今年年初我花了一个月整理了一份最适合2018年学习的web前端干货,从最基础的HTML+CSS+JS到移动端HTML5等都有整理,送给每一位前端小伙伴,53763,1707这里是小白聚集地,欢迎初学和进阶中的小伙伴。”

祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又是一周写文章的时候了,七天过的真快,距离上次写文章似乎就在昨天。现在,日子又有新的盼头,每七天一篇文章 ,日常生...
    stella包包阅读 408评论 4 11
  • 文/吴彻子 图/网络 本文首发于公众号大学生自我成长事件簿 二十几岁的年纪,不懂爱情却喜谈爱情。 -1- 这几天又...
    吴彻子阅读 1,072评论 0 8
  • 林茉叫我出去的时候,我正在床上躺尸,结果看到短信一个骨碌爬起来狂奔出门。 短信内容三个字:出来,吃。 林茉坐在烧烤...
    南川姑娘阅读 663评论 0 1
  • 今天简单做了一些运动,已经是2018年的5.16号了,你们的年初计划现在完成的怎么样了,时间过半,梦想真的过半吗?...
    Lucky男孩阅读 194评论 0 0
  • 从2016年7月,到现在。买了数不清的课,买了数不清的书,可是我一直是一个思想上的巨人,实际行动中的矮子。听课的时...
    清行qingxing阅读 434评论 0 0