js闭包相关知识点

如何产生闭包?
当一个嵌套的内部函数引用了嵌套的外部函数的变量时,就产生了闭包。
闭包到底是什么?
使用谷歌浏览器调试查看
理解一:闭包就是嵌套的内部函数。
理解二:内部函数中包含被引用变量的对象。
产生闭包的条件:
1.函数嵌套
2.内部函数引用了外部函数的数据(变量/函数)
注意:满足上述条件的函数,内部函数在声明的时候就产生了闭包。
但一定要调用外部函数。
外部函数执行了几次就会创建几次内部函数。
常见的闭包的两种情况
  1.  将函数作为另一个函数的返回值
    function f1(){
    var b=2;
    function fn(){
    b++;
    console.log(b);
     }
     return fn;
     };
     var f=f1();
    f();
    f();
    在这个例子中我们创建了一个变量f并把fn函数的执行结果(fn)赋值给f
    然后调用了两次f,结果打印输出了3和4.
    有些人可能就问了。为什么时3和4呢,b不是函数内部的变量吗,执行函数完后就自动释放了啊,这是因为在这个             过程中产生了一个闭包,查看上边闭包产看产生闭包的条件可知,在f1函数的内部嵌套了一个fn函数,并且fn函数引用了f1中 的数据b,我们在上边说了内部函数在声明的时候就产生了闭包,而这整个过程中内部函数只声明创建了一次,所以就只产生了一个闭包,而下边的调用的两个f只是在执行fn函数,
    要想产生多个闭包怎么做呢,我们上边也说啦:外部函数执行了几次就会创建几次内部函数。
    2.将函数作为实参传递给一个函数调用
    function show(msg,time) { 
       setTimeout(
            function(){
                alert(msg)
            },time )
     }
show("nihao",1000)
这个例子中产生闭包的原因也挺明显的,首先存在函数嵌套,其次内部函数引用了外部函数的变量msg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值