含义
概念
- 代码名字(变量)在某个范围内起作用和效果
- 目的:提高程序的可靠性,减少命名冲突
分类(es6之前)
- 全局作用域:整个script标签或者是一个单独的js文件
- 局部作用域(函数作用域):在函数内部起效果和作用
- 块级作用域(es6):{} 如if(){} for(){}
let 只在语句块内起效果和作用
变量的作用域
分类
- 全局变量:在全局作用域下的变量(特别地:在函数内部没有声明直接赋值的变量,也是全局变量)
- 局部变量:在局部作用域下的变量,只能在函数内部使用(注意:函数的形参也可以看作是局部变量)
区别
执行效率:全局变量只有在浏览器关闭时才会销毁,比较占内存资源;局部变量在程序执行完毕时就会销毁,比较节约内存资源
作用域链
根据内部函数可以访问外部函数变量的机制,用链式查找决定哪些数据能被内部函数访问,称为作用域链。(就近原则)