JavaScript作用域
作用域
就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突
全局作用域:整个script标签,或是一个单独的js文件
局部作用域(函数作用域):在函数内部就是局部作用域
名字一样时,全局和局部不冲突
变量的作用域
-
全局变量:在全局作用域下的变量,在全局下都可以使用
如果在函数内部没有声明,直接赋值的变量也是全局变量
-
局部变量:在局部作用域下的变量,在函数内部使用
函数的形参也可以看做局部变量
-
从执行效率来看
- 全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
- 局部变量,当我们程序执行完毕就会销毁,比较节约内存资源
-
js没有块级作用域,但在es6新增块级作用域
作用域链(就近原则)
- 只要是代码,就至少有一个作用域
- 如果函数中还有函数,那么在这个作用域中有可以诞生一个作用域
- 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作用域链
从目标出发,一层一层往外查找