1. 执行环境:执行环境是JS中最重要的一个概念;它定义了变量和函数有权访问的其他数据;
2. 变量对象:每个执行环境都有一个与之关联的变量对象;环境中定义的所有变量和函数都保存在这个对象中;
3. 全局执行环境:最外围的一个执行环境,根据ECMAScript实现所在的宿主环境不同而不同,在Web浏览器中,全局执行环境被认为是window对象;
4. 执行环境的销毁:在某个执行环境的所有代码都执行完毕后,环境将被销毁,意味着其中所有变量和函数定义也都随之销毁;全局执行环境的销毁是在网页或浏览器关闭时执行的;
5. 执行流:每个函数都有自己的执行环境;当执行流进入一个函数时,函数的环境就被推入到一个环境栈中;在函数执行完成,栈会将其环境弹出,再把控制权返还给之前的执行环境;
6. 作用域链:当代码在环境中执行时,会创建变量对象的一个作用链;作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问;
7. 作用域链的前端:前端,始终都是当前执行代码所在环境的变量对象;
8. 作用域链的后端:全局执行环境的变量对象始终都是作用域链中的最后一个对象;
9. 标识符(变量、函数、参数)的解析:是沿着作用域链一级一级地搜索过程;搜索的过程,始终都是从作用域链的前端开始,逐级向后,直到找到标识符为止;搜索到最后一个环境还是找不到的话,就会导致错误发生;
10. JS没有块级作用域;
11. 变量声明:使用var关键字声明变量的时候,变量将被自动添加到距离最近的可用环境中;不使用var声明的情况下,变量会被直接添加到全局环境中;
时间: 2024-11-23 22:54:58