js中的作用域
作用域指的是变量起作用的范围,即一个变量的生效范围。分为全局作用域和局部作用域,局限作用域也做函数作用域
全局作用域很好理解,就是哪都能起作用
作用域规则
- 函数可以使用函数以外的变量
var a = 10;
function m() {
console.log(a); // 10
}
m();
- 函数内部优先使用内部的同名变量
var a = 10;
function m() {
var a = 20;
console.log(a); // 20
}
m();
- 函数内部没有用var声明的变量,也是全局变量
var a = 10;
function m() {
a = 20;
console.log(a); // 20
}
m();
console.log(a); // 20
不推荐这么做,会让程序变得如同面条一样乱,函数内部的变量不应该干涉到外面的变量
作用域链
函数优先在内部查找变量,如果找不到,则向外层查找,外层还找不到,继续向上一层查找,直到最外层的全局作用域。这种链式查找方式就是作用域链
var a = 10;
function fn1() {
var a = 20;
function fn2(){
var a = 30;
console.log(a); // 20
}
console.log(a); // 30
fn2();
}
fn1();
console.log(a); // 10
转载必须注明出处:https://www.zhiqiexing.com/143.html