码迷,mamicode.com
首页 > 其他好文 > 详细

闭包+函数+作用域

时间:2019-10-26 12:12:01      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:函数   变量   一段   --   必须   就会   初始   例子   调用函数   

闭包是一个概念

指有权访问另一个函数作用域中的变量的函数

要理解闭包就必须要了解作用域链


函数创建 调用 执行完毕

  • 函数不过是一段可以在特定作用域执行代码的特殊对象

后台的每个执行环境都有一个表示变量的对象--变量对象。全部变量对象始终都存在

而像compare()函数这样的局部环境的变量对象,则只在函数执行的过程中存在

在创建compare()函数的时候,会创建一个预先包括全局变量对象的作用域链,这个作用域链被保存在内部的【【scope】】属性中

  • 创建函数的时候======= 预先创建一个作用域链

调用compare()函数的时候,会为函数创建一个执行环境,然后通过复制函数的【【scope】】属性中的对象构建起执行环境的作用域链。

此后,又有一个活动对象(在此作为变量对象使用)被创建并被推入执行韩晶作用域链的前端。对于这个例子中的conpare()函数的执行环境而言,

其作用域链中包含两个变量对象:本地活动对象和全局变量对象。显然,作用域链本质上是一个指向变量对象的指针列表,它只引用但不包含变量对象

  • 调用函数的时候=======创建执行环境及相应的作用域链,使用arguments和其他命名的参数的值来初始化函数的活动对象
  • 函数执行完毕后=======局部活动对象就会被销毁,内存中仅保存全局作用域

 

闭包+函数+作用域

标签:函数   变量   一段   --   必须   就会   初始   例子   调用函数   

原文地址:https://www.cnblogs.com/-constructor/p/11742407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!