jS的执行环境以及作用域浏览器的回收机制

执行环境(execution context)是JS一个非常重要的概念。
执行环境定义了变量或函数有权访问的其他数据决定了他们的各自的行为,每个执行环境等都有与之关联的的:变量对象(variable object),环境中定义的所有{变量}和{函数}都保存在这个对象中。(JS是无法读取内存的)我们编写的代码无法访问这个对象 但是解析器会在处理数据的时候后台使用它
全局执行环境 JS宿主:运行的平台(他是脚本语言吗所以你懂得) 由于JS实现的宿主环境不同, 表示执行环境也不一样
web浏览器中全局---------window对象 知道了这个那么天天使用的变量啊,函数啊的全局 都是作为window对象的属性和方法创建的
环境销毁:
某个执行环境所有代码执行完之后 该环境被销毁 保存在其中的所有变量和函数定义也随之销毁(这个全局也就是关了浏览器或者程序的时候才被销毁 )
局部执行环境
栈:每个函数都有自己的执行环境 当执行流进入函数时,函数的环境就被推入一个环境栈中 而在函数执行之后,将其环境弹出, 把控制权返回之前的执行环境-----------------ECMAScript中的执行流(从上到下执行)真有这个方便的机制控制着
环境执行(作用域链)
【jS的执行环境以及作用域浏览器的回收机制】当代码在一个环境中执行时,会创建变量对象的一个----------作用域链
用途:保证对执行环境的有权访问的所有变量和函数的有序访问(上面执行环境的概念)作用于链的前端-----始终是当前执行代码所在环境的变量对象(就是正在执行的代码 现在执行的位置)
比如环境是函数 那么将其活动对象最为变量对象 活动对象在开始只包含一个变量 即{arguments对象}(注意全局环境中不存在arguments)那么作用域的下一个变量对象来自包含来自(外部)环境 ,而下一个则是来自下一个包含环境 这样一直延续到全局执行环境; 全局环境始终是作用域链的最后一个对象(web浏览器中即是window)

    推荐阅读