JS(面试题)闭包-浅

javascript闭包

作用域的特殊情况。
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数。
在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

  • 函数作为参数被传递。
  • 函数作为返回值被返回。
  • 闭包:自由变量的值是在函数执行的地方向上级作用域寻找,非执行的地方。

优点

  • 加强封装性,可以达到对变量的保护作用。

缺点

  • 由于闭包内部变量优先级高于外部变量,所以多查找作用域链中的一个层次,就会在一定程度上影响查找速度。
  • 内存浪费
<html>
<head>
	<script type="text/javascript">  
        //函数作为返回值
        function create() {
            let a = 100
            return function () {
                console.log(a)
            }
        }
        let fn = create();
        let a = 200;
        fn();  //输出 100
        //函数作为参数
        function print(fun){
            const aa = 200;
            fun();
        }
        const aa = 300;
        function fun(){
            console.log(aa);
        }
        print(fun); //输出 300
    </script>
</head>
<body>
</body>
</html>

你可能感兴趣的:(JavaScript)