zoukankan      html  css  js  c++  java
  • 闭包与循环的结合

    闭包应用的循环中:能存储异步的每次数据。

    //例一:
        function constfunc(v){
            return function(){
                return v;
            };
        };
        var funcs=[];
        
        for(var i=0;i<10;i++){
            funcs[i]=constfunc(i)(); 
        };
        
        console.log(funcs[7]); //输出7
    //对比上面的函数
    //例二:
        function constfuncs(){
            var funcs=[];
            for(var i=0;i<10;i++){
                funcs[i]=function(){
                    return i;
                };
            };
            return funcs;
        };
        var funcs=constfuncs();
        console.log(funcs[1]()); //输出10

    上面的例子 例一返回每次存储的值;而例二则都是返回10;

    闭包的作用域链都是‘活动的’,嵌套的函数不会将作用域内的私有成员复制一份;也不会对绑定的变量生成静态快照。

    第二点:

    this是关键字,(每个函数调用都包含一个this值)。闭包在外部函数里是无法访问this的,除非外部函数将this转存为一个变量:var that=this;

    arguments并不是关键字,但是调用函数时都会自动声明它,由于闭包具有自己绑定的arguments,因此闭包无法直接访问外部函数的参数数组,除非外部函数将arguments保存在另一个变量中: var otherArguments=arguments;

  • 相关阅读:
    SRF 认证
    Python getattr
    jQueryattr()与prop()之间的区别
    鼠标事件(拖拽)
    Python中操作MySQL的模块---pymsql
    C++ 存储类
    C++ 修饰符类型
    C++ 变量作用域
    C++ 变量类型
    C++ 数据类型
  • 原文地址:https://www.cnblogs.com/gaidalou/p/5969111.html
Copyright © 2011-2022 走看看