Page

[转载]简单代码说明JavaScript中的闭包原理

615Anson16-08-01


什么是闭包: 一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 闭包的特性: 1. 一个函数变量的一个引用,当函数返回时(return),处于激活状态 2. 一个闭包就是当函数返回时,一个没有释放资源的栈区 也就是说javaScript可以使用内部函数---函数定义和函数表达式位于另一个函数的函数体内。 而且,这些函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部 函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
 <script>
            // 1 . 在函数内部访问全局变量
            var num = 11;
            function func1(){
                // 在函数内部可以得到全局变量的值
                console.log(num);
            }
            func1();
            // 2 . 在函数外部得到函数内部的值
            function func2(){
                // num1 是局部变量
                var num1 = 22;
                num2 = 33;
            }
            func2();
            // 在函数外部得不到函数内部的值
            // console.log(num1);
            // 由于定义num2时没有用var关键字,它被认为是全局变量
            console.log(num2);
            //
            // 3 . 如果从外部得到内部的值
            // 在外部无法获取到 func3 内部的变量,但是func3内部的方法func4()可以获取到
            // 这样在外部通过 func4 可以获取到func3的内部变量 
            // 虽然饶了一个圈子
            // 而 func3 内部的方法 func4 就叫做闭包。这个方法搭建了方法内部与方法外部的一个桥梁
            
            function func3(){
                var num3 = 44;
                function func4(){
                    // 返回num3
                    return num3;
                }
                // 把fubc4 的结果返回
                return func4;
            }
          var func = func3();
          console.log(func());
        </script>



什么是闭包:

    一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

    闭包的特性:

    1. 一个函数变量的一个引用,当函数返回时(return),处于激活状态

    2. 一个闭包就是当函数返回时,一个没有释放资源的栈区

    也就是说javaScript可以使用内部函数---函数定义和函数表达式位于另一个函数的函数体内。

    而且,这些函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部

    函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。



来自网络

2016年8月1日