你要会的,js闭包前端面试题

有工作经验的前端都知道,面试时基本都会问下js闭包问题,考查下你的js基础水平。作为新手前端刚入门的你,这个前端面试必备知识点,你会吗?不会的话,就赶快看下吧,补补课吧。

js闭包问题

1.闭包的概念:

    闭包就是一个函数,两个函数彼此嵌套,内部函数就是闭包形成闭包条件是内部函数需要通过return给返回出来。

看下面的代码,你就懂了:

1

2

3

4

5

6

7

8

9

10

<script type="text/javascript">

    function f1(){

        function f2(){

            alert("我是js闭包!");

        }

        return f2;

    }

    var f=f1();

    f();  //弹出:我是js闭包!

</script>

2. 闭包特点

闭包有权利调用其上级环境的变量信息。父级环境的信息已经固化为本身AO的成员了。

看下代码,更好理解:

1

2

3

4

5

6

7

8

9

10

11

<script type="text/javascript">

    function f1(){

        var bb = "闭包";

        function f2(){

            alert('我是'+bb);

        }

        return f2;

    }

    var f = f1();

    f();  //弹出:我是js闭包

</script>

3. 闭包使用规则

同一个闭包机制可以创建多个闭包函数出来,它们彼此没有联系,都是独立的。

并且每个闭包函数可以保存自己个性化的信息。

看下代码,理解下三个闭包彼此独立、没有联系:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<script type="text/javascript">

    function f1(num){

        function f2(){

            alert('数字:'+num);

        }

        return f2;

    }

    var fa = f1(10);

    var fb = f1(20);

    var fc = f1(30);

    fa();   //数字:10

    fb();   //数字:20

    fc();   //数字:30

</script>

4. 闭包的使用例子,加深理解闭包

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<script type="text/javascript">

    //创建数组元素

    var num = new Array();

    for(var i=0; i<4; i++){

        //num[i] = 闭包;//闭包被调用了4次,就会生成4个独立的函数

        //每个函数内部有自己可以访问的个性化(差异)的信息

        num[i] = f1(i);

    }

    function f1(n){

        function f2(){

            alert(n);

        }

        return f2;

    }

    num[2]();  //2

    num[1]();  //1

    num[0]();  //0

    num[3]();  //3

</script>


原文地址:https://blog.deisuan.com/js/141.html

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值