JavaScript之作用域-作用域链
作用域 ==> 作用域链
作用域:变量可以其作用的区域(声明定义好一个变量,变量可以在哪些范围内使用)
分类:全局作用域和局部作用域(函数作用域);在js中,目前全局有作用域以及函数可以形成作用域
注意点:函数作用域就是在函数声明定义好的时候,这个函数作用域就定下来了。
作用域链:任何函数形成作用域,函数嵌套在另外一个函数中,外层函数也有自己的作用域,这样从里到外,到全局作用域形成的链式结构叫做作用域链
function fn(){ var num = 10; function inner() { function foo() { } } }
函数作用域链都是从当前函数作用域出发,从里到外的形成的;
foo函数的作用域链: foo函数作用域 ==> inner函数作用域 ==> fn函数作用域 ==> 全局作用域;
inner函数的作用域链:inner函数作用域 ==> fn函数作用域 ==> 全局作用域
var num = 888; function fn(){ function inner() { function foo() { console.log(num); // 10 } foo() } inner() } fn();
变量的查找原则: 简单记忆:沿着作用域链进行查找;
1. 先在当前作用域中来查找是否有声明该变量,如果有,返回变量的值
2. 如果没有,去外层作用域中去查找,如果有,返回变量的值
3. 如果没有,沿着作用域链继续往外找,直到全局作用域,如果有,返回变量的值;
4. 如果还没有,报错。

浙公网安备 33010602011771号