开发者学堂课程【JavaScript 入门与实战:作用域及作用域链】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/582/detail/8045
作用域及作用域链
内容介绍
一、作用域及作用域链
一、作用域及作用域链
只要函数可以制造作用域结构,那么只要是代码,就至少有一个作用域及全局作用域,凡是代码中有函数,那么这个函数就构成另一个作用域,如果函数中还有函数,那么在这个函数中就又可以产生一个作用力。
将这样的所有的作用域列出来,可以有一个结构函数内指向函数外的链式结构,就称作作用域链。
<script>
vara=3;
function f1( ){
//var a=6;
function f2(){
//var a=5
function f3(){
//var a=4;
console. log(a);
}
f3();
}
f2( );
一个函数就是一个作用域,这时候就要注意,我们的函数f3在运用的时候有没有在自己的作用域里面,有没有这个变量,如果有的话,就可以直接用,如果没有的话,这个时候就要注意我们要到上一层的函数当中去找,这时候你会发现有一个f5可以直接拿来用,如果突然注释掉,会发现没有了,那就接着往上一层函数找,以此类推,这就是全局作用域。
这个时候我们在某一个作用域里找一个变量,如果找不到的话,他就会自动地到上一层里去找,直到找到为止,即当函数中使用给某个变量时,优先在自己的作用域中查找,如果找不到,就会向上一层作用域查找,如果找不到,继续往上一层查找,直到全局作用域,如果还找不到,直接报错,这就是作用域链。