zoukankan      html  css  js  c++  java
  • 闭包的示例以及带来的问题

    
    
    //返回函数数组,以为内部函数保存着func2函数的活动对象,所以引用的都是同一个变量,因此每个i的值都为10,比如执行func2()[0]()结果为10
    function func2() {
    	var result = new Array();
    
    	for (var i = 0; i < 10; i++) {
    		result[i] = function() {
    			return i;
    		};
    	}
    	return result;
    }

    //返回函数数组,因为num是复制i值,不是引用,所以每个num取值不一比,如执行func4()[0]()结果为0
    function func4() {
    var result = new Array();

    for (var i = 0; i < 10; i++) {
    result[i] = function(num) {
    return function() {
    return num;
    }
    }(i);
    }
    return result;
    }

    //返回[0,1,2,3,4,5,6,7,8,9]
    function func1() {
    	var result = new Array();
    
    	for (var i = 0; i < 10; i++) {
    		result[i] = i;
    	}
    	return result;
    }
    
    //返回[0,1,2,3,4,5,6,7,8,9]
    function func3() {
    	var result = new Array();
    
    	for (var i = 0; i < 10; i++) {
    		result[i] = function() {
    			return i;
    		}();
    	}
    	return result;
    }
    //返回[0,1,2,3,4,5,6,7,8,9]
    function func5() {
    	var result = new Array();
    
    	for (var i = 0; i < 10; i++) {
    		result[i] = function(num) {
    			return num;
    		}(i);
    	}
    	return result;
    }
    
    

      

  • 相关阅读:
    springboot整合springmvc应用
    spring注解使用
    亨元模式 四大引用 逃逸引用 池化思想
    springboot整合连接池
    springboot整合mybatis(待更新)
    php安装imagick扩展
    js复制功能代码
    PHP7兼容mysql_connect的方法
    linux开机启动
    centos8安装php扩展memcached报错
  • 原文地址:https://www.cnblogs.com/echo2016/p/6811296.html
Copyright © 2011-2022 走看看