美文网首页让前端飞
执行环境及作用域、变量对象、作用域链、闭包

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

作者: 强哥科技兴 | 来源:发表于2018-11-18 11:30 被阅读3次

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

执行环境是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,快速升职加薪,走上人生巅峰。

相关文章

  • js函数中的this

    前两篇文章“执行环境和作用域”和“js中的闭包”,我对谈了执行环境、作用域、作用域链和闭包的理解。但当牵涉到对象中...

  • 闭包,作用域链,上下文

    编译阶段 => 确定作用域执行阶段 => 执行上下文,变量对象,作用域链,以及this的值会分别被确定(闭包),出...

  • 执行环境 & 作用域 & 闭包

    执行环境 & 作用域 & 闭包 执行环境 , 作用域 , 闭包 , 闭包应用 执行环境 执行环境定义了 当前环境的...

  • 闭包

    作用域链 要学习闭包,首先要了解作用域链 作用域链:环境对象中定义的变量,会放到作用域中,形成一个链式结构。 定义...

  • 2023-01-12

    变量提升调用栈块级作用域作用域链和闭包 闭包 => 作用域链(词法作用域) => 调用栈(栈溢出) => 上下文...

  • 初识闭包

    闭包 闭包就是指有权访问另一个函数作用域中的变量的函数。在后台执行环境中,闭包的作用域链包含着它自己的作用域,包含...

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

    一:执行环境及作用域 和 变量对象 执行环境是javascript中最为重要的一个概念。每个执行环境都有一个与之关...

  • 执行上下文,词法作用域,作用域链,闭包

    执行上下文,词法作用域,作用域链,闭包

  • JS作用域链

    作用域:定义这个变量的区域 作用域链:当前活动对象,加上包含它的所有活动对象 作用域链的作用:是保证执行环境里有权...

  • 后端程序员的 JavaScript 之旅 - 作用域链、执行上下

    那么闭包到底是如何工作的呢?了解闭包首先需要了解变量作用域和作用域链,另外一个重要的概念是执行上下文环境。 变量作...

网友评论

    本文标题:执行环境及作用域、变量对象、作用域链、闭包

    本文链接:https://www.haomeiwen.com/subject/diawfqtx.html