• 我所理解的闭包


    闭包最主要概念:有权访问另一个函数作用域内变量的函数

    function add(){
         var result;
        result = function(x,y){
              return y+x     
        }   
        return result             
    }
    
    var sum = new add();
    console.log(sum(10,20))/*30*/

    在函数内访问某个变量是根据函数作用域链来判断变量是否存在,而函数作用域链是程序根据函数所在的执行环境栈来初始化的。

    https://www.jianshu.com/p/26c81fde22fb

    函数会执行的主要原因就在于()

    function createFunctions(){
        var result = new Array();
        for (var i=0; i < 10; i++){
             result[i] = function(){
                      return i;
            };
                   
        }
        return result;
    }
    var funcs = createFunctions();
    
    for (var i=0; i < funcs.length; i++){
         console.log(funcs[i]());
    }
    /*打印出10个10*/

    原因在于返回的函数都引用了变量i,但它并非立即执行,等到函数都返回是i=10

    function createFunctions(){
         var result = new Array();
        for (var i=0; i < 10; i++){
            result[i]=(function(num,count){
                return function (){
                    return num+count
                 }
             })(i,3)
        }
        return result;
    }
    var funcs = createFunctions();
    
    for (var i=0; i < funcs.length; i++){
         console.log(funcs[i]());
    }
    /*正确打印1-10*/

    内部有立即执行函数,也就是()执行环境

  • 相关阅读:
    MGR
    复制参数优化
    mysql复制
    sysbench
    mysql 用户及权限
    MySQL多实例安装
    PHP常用数组函数
    AJAX传递数据的两种编码x-www-form-urlencoded与json的区别
    使用PHP操作文件
    var_dump和var_export区别
  • 原文地址:https://www.cnblogs.com/yewook/p/9564032.html
Copyright © 2020-2023  润新知