注意:函数作用域和变量作用域并不是一个概念,在学习函数作用域时可以先暂时忘记变量作用域的概念。
怎么理解函数作用域?
我们可以把函数作用域理解为一个封闭的空间,这个空间内部的变量和参数在这个空间外是访问不到的。这个空间就可以叫做域。
那么在js代码中函数体就是这个空间。
列子如下:
function temp(){
var number = 5;
if(true){
alert(number);//控制台打印number
}
for (var i = 0; i < 1; i++) {
document.write(number);//页面输出number
}
}
temp();
console.log(number);//这个会报错,在全局访问不到函数内部的变量。
什么是作用域链?
我们都知道在js代码中函数是可以嵌套的,那么函数嵌套函数每一个函数又都有自己的作用域,相应的就形成了一个作用域嵌套作用域的情况,这就是作用域链。
列子如下:
function a(){
function b() {
function b1(){
function b2(){
}
}
}
function c() {
function c1() {
}
function c2() {
}
}
}
//结合下面的图片理解,每一函数对应一个作用域
作用域链.png
网友评论