zoukankan      html  css  js  c++  java
  • js 闭包

    function constfuncs(){
            var funcs=[];
            for(var i=0;i<10;i++){
                funcs[i]=function(){
                    return i;
                }
            }
            return funcs;
        }
        var func=constfuncs();
        console.log(func[5]());

    在刚接触闭包的时候估计很多人会想上面的输出结果是5 ,但是实际输出结果确是10。可能你会想不明白,为什么是这样的结果,看完下面的分析你就会豁然开朗了。

    上面这段代码创建了10个闭包,并将它们存储到一个数组中。这些闭包都是在同一个函数调用中定义的,因次它们可以共享变量i 。当consfuncs()返回时,变量i的值是10,所有的闭包都共享这一个值,这不是我们想要的结果。这是因为关联到闭包的作用域链都是“活动的”,记住这一点非常重要。嵌套的函数不会将作用域内的私有成员复制一份,也不会对绑定的变量生成静态快照。

    我想明白了这些上面的结果应该没什么困惑的了吧??

  • 相关阅读:
    个人第三次作业——原型设计
    《构建之法》团队作业第一次
    vsCode如何将结果输入到调试控制台
    Beta-冲刺第三天
    Beta版本(有更改)
    Beta冲刺-第二天
    Beta冲刺—第一天
    个人作业-测试
    团队项目—系统设计
    团队项目-需求分析
  • 原文地址:https://www.cnblogs.com/alphathink/p/5786834.html
Copyright © 2011-2022 走看看