闭包,做用域,做用域链

全局变量:能够在任何地方反复使用的变量,但可能会形成全局污染数组

局部变量:不能够重复使用,只在函数中使用闭包

闭包:优势:可重用变量,又能够保护变量不受污染的机制函数

           缺点:比通常的函数更占用内存3d

闭包流程图片对象

  1. 闭包准备阶段

  完成外层循环调用blog

  

 

 

  1. 调用内层循环

  

 

 

  3.再次调用内层循环生命周期

 

   

 

  4.调用结束后图片

   

 

 

 

 

做用域:变量的可用范围内存

  1. 全局做用域window

包含全局变量作用域

  1. 局部做用域

包含局部变量,在函数体内,局部变量的优先级高于同名的全局变量。   

函数生命周期:

1. 开始执行前(生命提早阶段)

 建立执行环境栈(数组):临时保存正在执行的函数的执行环境

向执行环境中添加第一个默认程序main(),该方法建立出一个全局做用域的对象window

   

 

 

2.定义函数时

建立函数对象,封装函数的定义

声明函数变量,引发了函数对象,函数对象的scope属性引用回,建立函数时的做用域

   

 

  3.调用函数时

在ECS中加入一个新的元素并记录新函数的调用

建立一个活动对象,保存本次调用用到的局部变量

ECS中的新执行环境元素引用活动对象

活动对象中的parent属性引用函数的scope指向副局做用域对象

(前提是活动做用域中没有局部变量,才沿着parent向父级做用域找)

    

 

   

 

4. 调用函数后

                    执行环境栈中本次函数的执行环境出栈

                             致使活动对象被释放,致使局变量一同释放

   

 

   

 

做用域链

  右多级做用域连续引用造成的链式结果

            掌握一切变量的使用顺序 :先在局部照,没有则延做用域链向父级做用域中找

相关文章
相关标签/搜索