为什么这个闭包不可以用?

碰到一个问题,让 go("l") 输出 "gol", go()("l") 输出 "gool",go()()()()("l") 可以输出 "goooool".
下面是我的解决方法

function go(r) {
    let str = 'go';

    function a() {
        str += 'o';
    }

    function pro(m) {
        if (m) {
            console.log(str + 'l');
        } else {
            a();
            return pro;
        }
        
    }

    if (!r) {
        a();
        return pro;
    } else {
        console.log(str + 'l');
    }
}

但是我发现最后一个判断干的就是pro的事 ,

function go(r) {
    let str = 'go';

    function a() {
        str += 'o';
    }

    function pro(m) {
        if (m) {
            console.log(str + 'l');
        } else {
            a();
            console.log(pro);
            return pro;
        }
        
    }
    pro(r);
    
}

改成这样就会报错,
图片描述

console可以得到pro,想知道为什么谢谢

阅读 1.3k
1 个回答

return pro(r);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题