• 关于闭包的一道题目解析


    function fun(a, b) {
        console.log('b:', b)
        return {
            fun: function (m) {
                return fun(m, a)
            }
        }
    }
    const c = fun(0);
    console.log('c.fun(1) = ' + c.fun(1));
    
    console.log('c.fun(2) = ' + c.fun(2));
    
    console.log('c.fun(3) = ' + c.fun(3));
    
    console.log('c.fun(1).fun(2).fun(3) = ' + c.fun(1).fun(2).fun(3));
    

      

    /*  共同部分:const c = fun(0);
        执行:const c = fun(0);
        参数变换: a = 0, b = undefined,
        结果:b=undefined(打印), c = {fun: function(m){return fun(m, 0)}}
     */ 
    /**c.fun(1)的解题过程:
        执行:c.fun(1)
        参数变换:m=1,a=0,  a=1,b=0, 
        结果 b:0(打印), c.fun(1) = {fun: function (m) {return fun(m, 1)}}(打印)
     */
    /**c.fun(2)的解题过程:
        执行:c.fun(2)
        参数变换:m=2,a=0,  a=2,b=0, 
        结果 b:0(打印), c.fun(1) = {fun: function (m) {return fun(m, 2)}}(打印)
     */
    /**c.fun(3)的解题过程:
        执行:c.fun(3)
        参数变换:m=3,a=0,  a=3,b=0, 
        结果 b:0(打印), c.fun(1) = {fun: function (m) {return fun(m, 3)}}(打印)
     */
    /* c.fun(1).fun(2).fun(3)的解题过程:
        执行:c.fun(1)
        参数变换:m=1,a=0,  a=1,b=0, 
        结果 b:0(打印), c.fun(1) = {fun: function (m) {return fun(m, 1)}}
        执行:c.fun(1).fun(2)
        参数变换:m=2,a=1,  a=2,b=1, 
        结果 b:1(打印), c.fun(1).fun(2) = {fun: function (m) {return fun(m, 2)}}
        执行:c.fun(1).fun(2).fun(3)
        参数变换:m=3,a=2,  a=3,b=2, 
        结果 b:2(打印), c.fun(1).fun(2).fun(3) = function (m) {return fun(m, 3)}(打印)
    */
  • 相关阅读:
    关于React的入门级安装和最浅显解释
    Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
    AWS S3 CLI的安装和配置
    用Node完成AWS S3的Upload流程之全世界最简版
    在Web应用中接入微信支付的流程之极简清晰版
    storm metrics
    hadoop 2.2.0 centos 6.4 x64 编译
    如何打造核心竞争力(经验总结)
    mysql event scheduler机制 与 动态表名创建
    hadoop 2.2.0 安装
  • 原文地址:https://www.cnblogs.com/baixinL/p/13825790.html
Copyright © 2020-2023  润新知