美文网首页web前端
函数作用域&&作用域链

函数作用域&&作用域链

作者: 悟空弜厸 | 来源:发表于2017-04-14 19:20 被阅读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

    相关文章

      网友评论

        本文标题:函数作用域&&作用域链

        本文链接:https://www.haomeiwen.com/subject/wsyiattx.html