A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nigori 中级黑马   /  2019-4-26 16:39  /  1085 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>

    function f1() {
        var i = 0;
        return function () {
            console.log(i++);
            var j = 1;
            return function () {
                console.log(j++)
            }
        }
    }
    f1();  // 调用后 返回了一个内部闭包函数

    console.log(f1());  //输出 内部闭包函数

    var f2 = f1();  // 将内部闭包函数 赋值给 f2
    f2();   // 调用内部函数 第一次 输出 0
    f2();  // 调用内部函数 第二次 输出 1 (因为闭包函数 具有私有变量的特性 变量会 一直保存

    f1()();   // 此 写法 等同 与上面 f2()  输出为 0
    console.log(f1()());   // 输出 0 和 内部闭包函数内的函数

    f1()()();    // 输出 0  1
    var ff = f1()();  // 将最里层 函数 赋值给ff 同时输出 0
    ff();  // 调用 最里层函数 第一次 输出  1
    ff(); // 调用 最里层函数 第二次 输出  2
    
</script>
</body>
</html>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马