1.我们知道当函数赋值时,会首先进行右边的程序,下方代码恰好是一个匿名函数自运行,在自运行函数中return 一个方法,外部用一个变量gg接收这个方法,这样我们可以直接调用这个方法

var a = (function(){
    return function(){
        console.log(123);
    }
})()
a();

2.当自运行函数中嵌套自运行函数时,那么return出来的方法,会返回个父级作用域,这时外部变量会接收不到内部的返回而报错。

var a = (function(){
    !function(){
        return function(){
            console.log(333);
        }
    }()
})()

这时候,我们需要在父级作用域通过一个变量接收返回值,然后将这个变量在父级作用域再次return出这个变量,

var a = (function(){
    var b = (function(){
        return function(){
            console.log(123);
        }
    })()
    return b;
})();

综上所述,在一个封闭作用域中,既可以返回一个固定值,也可以返回一个function,返回值靠外部变量接收,若接收的是function那么它就可以直接调用,在封闭作用域嵌套模型中,从内部return出的值只能返回相对于自己的外层作用域,若想返回给更外部的空间则需要在当前空间接收内部返回值,然后再return出去。
————————————————
版权声明:本文为CSDN博主「Colin_me」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/arvin_top/article/details/85016010

发表评论