Javascript高阶函数-如何将变量从传递到函数到其父函数

时间:2018-11-04 03:06:14

标签: javascript variables currying

我正在尝试解决此算法。我想我很亲近。

我需要seven函数将a变量传递给timesFive函数。还是有一种方法可以将* 5操作从timesFive传递到7以获得期望的结果?

  • 不允许我在这两个函数范围之外使用变量。
  • 只要b保持第一个参数,我就可以在timesFive中添加另一个参数。

    function seven(action) {
        var a = 7;
    
        return action;
    }
    
    
    function timesFive(b) {
        console.log(a);  // How can I access "a"?
    
        return a * 5;
    }
    
    
    console.log(seven(timesFive()));    // Desired result: 35
    

1 个答案:

答案 0 :(得分:1)

timeFive应该返回一个函数,而七个应该期望一个函数作为参数。然后seven可以简单地调用timesFive()返回的函数(因此基本上可以返回问题中提到的* 5操作):

function seven(action) {
    var a = 7;
    return action(a);
}


function timesFive() {
    return (a) => a * 5;
}

console.log(seven(timesFive()));    // Desired result: 35

顺便说一句 您经常会看到以类似于数学的功能符号的方式编写的这类练习,例如:

const seven = (action) => action(7);
const timesFive = () => (a) => a * 5;

console.log(seven(timesFive()));    // Desired result: 35