作用域分类
全局作用域: 可以在代码中的任何地方都能被访问
局部作用域: 一般只固定在代码段内可以访问得到
作用域链是什么
1、全局作用域和局部作用域中的变量访问权,其实是由作用域链决定的;
2、每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链。
3、作用域链是函数被创建的作用域中得到对象的集合。
4、作用域链可以保证对执行环境有权访问的所有变量和函数的有序访问;
5、全局执行环境的变量对象始终是作用域链中的最后一个对象;
6、函数的局部环境可以访问函数作用域中的变量,也可以访问和操作父环境(包含环境)乃至全局环境中的变量。
7、父环境只能访问其包含环境和自己环境中的变量和函数,不能访问其子环境中的变量和函数。
8、全局环境只能访问全局环境中的变量和函数,不能直接访问局部环境中的任何数据。
作用域链总结:
1、 执行环境决定了变量的生命周期,以及哪部分代码可以访问其中变量
2、 执行环境有全局执行环境(全局环境)和局部执行环境之分。
3、 每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链
4、 函数的局部环境可以访问函数作用域中的变量和函数,也可以访问其父环境,乃至全局环境中的变量和环境。
5、 全局环境只能访问全局环境中定义的变量和函数,不能直接访问局部环境中的任何数据。
6、 变量的执行环境有助于确定应该合适释放内存。
提升:
1、变量提升:变量提升,就是把变量提升到函数的顶部,需要注意的是,变量提升只是提升变量的声明,不会吧变量的值也提升上来!
2、函数提升:函数提升,把函数提升到前面,只有函数声明形式才能被提升;