作用域-基础知识总结------彭记(07)
作用域
1.变量起作用的范围
-一个变量的作用域就是从这个变量定义开始到这个变量所在的{}结束
2.在js中,只有函数可以创建作用域
-没有块级作用域--意味着在if或者for中定义的变量在它们的外部也能够访问
-变量获取遵守变量搜索原则
-不关注什么时候调用,只关注在什么位置创建
3.词法作用域(静态作用域):
-根据代码的书写结构去确定变量的作用范围,与调用没有关系。意味着在使用一个变量的时候,首先在自己的作用域中查找,如果没有就去上一级作用域中查找
例:var age =20;
function test(){
cosole.log(age);
}
function test2(){
var age=40;
test();
}
test2();//20
函数的作用域链:
1.在函数中可以嵌套函数,这样就形成了作用域中嵌套另一作用域,就形成了作用域链
2.作用域中变量的搜索原则:
a)首先在当前使用变量的作用域中查找,如果找到就使用,否则查找上一级作用域
b)查找上一级作用域,如果找到就使用,否则再查找上一级作用域
c)如果没有,就一直沿着作用域往上找,直到找到全局的作用域为止
3.访问规则:内层作用域可以访问外层作用域的变量,外层作用域不能直接访问内层作用域中的变量
例:var num;
function f1(){
var num;
function f2(){
console.log(num);//123
}
num=123;
f2();
}
num=234;
f1();