1、JS作用域
- 定义: 变量在某个范围内起作用的效果
- 目的: 为了提高程序的可靠性,更要的是减少命名冲突
- js的作用域(es6)之前: 全局作用域 局部作用域
- 全局作用域: 整个script标签 或 单独js文件
- 局部作用域(函数作用域): 在函数内部就是局部作用域, 也就是说变量只在函数内部起效果和作用
- ES6新增块级作用域
function fn() {
//局部作用域
}
2、变量的作用域
- 全局变量: 在全作用域下的变量,在全局都可以使用
注意: 如果在函数内部,没有声明,并直接赋值的变量,也是全局变量
var num = 10
console.log(num);//10
num就是一个全局变量
- 局部变量: 在函数中的变量,就是局部变量
function fn(aru) {
var num1 = 10
}
are也可以是看作是一个局部变量
- 变量-->全局作用域和局部作用域的执行效率
全局变量,只有浏览器关闭的时候才会销毁 ,比较占用内存资源 局部变量,当程序执行完毕就会销毁,比较节约内存资源
3、作用域链
- 定义: 根据内部函数可以访问外部函数的执行机制,用链式查找,决定哪些数据可以被内部函数访问,称之为作用域链
var num = 10;
function fn() {//外部函数
var num = 20;
function fun () {//内部函数
console.log(num);
//打印 20
}
}
注意: 就近原则