闭包1

闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。
这些外部执行域的非持久型变量保留他们在闭包最初定义(或创建)时的值。
可以访问另外一个函数的内部变量的函数就是闭包。

案例中return的匿名函数就是一个闭包

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
    
</body>
</html>
<script type="text/javascript">
    function outFn() {
        var num = 10
        return function () {
            num++;
            console.log(num);
        }

    }
    var fn1 = outFn();
    fn1();//11
    fn1();//12
    var fn2 = outFn();
    fn2();//11
    fn2();//12
</script>
原文地址:https://www.cnblogs.com/darkterror/p/6241492.html