为了账号安全,请及时绑定邮箱和手机立即绑定

用函数计算代码战问题

用函数计算代码战问题

月关宝盒 2021-10-29 10:50:14
我试图弄清楚这些函数是如何在彼此内部调用的。有人能告诉我他们是如何运行的吗?是否先调用七(),然后调用五()?function expression(number, operation){    if(!operation)        return number;    return operation(number);}function five(operation) { return expression(5, operation); }function seven(operation) { return expression(7, operation); }function times(x) {    return function(y) {        return y * x;    }}seven(times(five())); // must return 35
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我通过从内部调用函数到外部函数来工作。如图所示,函数及其带有参数的调用及其后续调用。


five()

    expression(5)

        5

times(5) 

    function with closure over x = 5

seven(function)

    expression(7, function)

        function(7)

35

最后,您会发现相同的结果,但具有相反顺序的函数数组。使用累加器调用函数,累加器返回函数调用的结果。


这种方法是可能以后(或永远不会)使用实际实验 管道 operator|>的实际实现,它具有以下语法:


expression |> function

或者使用您的函数:未定义 |> 五次 |> 次 |> 七次


function expression(number, operation) {

    console.log('expression');

    if (!operation) return number;

    return operation(number);

}


function five(operation) {

    console.log('five');

    return expression(5, operation);

}


function seven(operation) {

    console.log('seven');

    return expression(7, operation);

}


function times(x) {

    console.log('times');

    return function(y) {

        return y * x;

    }

}


console.log(seven(times(five()))); // 35


console.log([five, times, seven].reduce((value, fn) => fn(value), undefined))


查看完整回答
反对 回复 2021-10-29
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信