web前端

函数作用域&&作用域链

2017-04-14  本文已影响16人  悟空弜厸

注意:函数作用域和变量作用域并不是一个概念,在学习函数作用域时可以先暂时忘记变量作用域的概念。

怎么理解函数作用域?

我们可以把函数作用域理解为一个封闭的空间,这个空间内部的变量和参数在这个空间外是访问不到的。这个空间就可以叫做域。
那么在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
上一篇下一篇

猜你喜欢

热点阅读