【问题标题】:How to return a value from a callback that is passed a parameter如何从传递参数的回调中返回值
【发布时间】:2018-12-24 09:42:05
【问题描述】:

我创建了一个函数 square(返回数字的平方)并将其传递给另一个函数。

var num = 5;
  function square(x){
  return x*x;
}

function display(fn){
  console.log(fn())
}

display(function(){square(num)});

它没有返回显示函数中的平方值,而是返回“未定义”。

【问题讨论】:

  • 你传递给display的函数没有返回任何东西,因此undefined。更改为return square(num)
  • func 1 应该return func2(param)

标签: javascript ecmascript-6 callback


【解决方案1】:

这里。您只需在display 函数中返回square(num)

var num = 5;
  function square(x){
  return x*x;
}

function display(fn){
  console.log(fn());
}

display(function(){
  return square(num);
});

【讨论】:

    【解决方案2】:

    您不必使用function(){} 来调用您的函数。 它只用于定义一个函数。

    除此之外,您可以只使用fn 变量登录到控制台,您不必使用fn()

    var num = 5;
    function square(x){
        return x*x;
    }
    
    function display(fn){
        console.log(fn)
    }
    
    display(square(num));
    

    也可以将值返回到变量中,如果这样更容易阅读:

    function square(x){
        return x*x;
    }
    
    function display(fn){
        console.log(fn)
    }
    
    var num = 5;
    var calculationResult = square(num);
    display(calculationResult);
    

    【讨论】:

    • 如何返回square(num)display 不返回任何内容。
    • squire 函数将值(现在为 25)返回到 display 函数中。所以fn = 25。这导致console.log(25)
    【解决方案3】:

    你在这里丢失了返回值:

     display(function(){square(num)})
    

    你要么必须退货:

     display(function(){ return square(num)})
    

    或者你使用箭头函数

     display(() => square(num));
    

    或者你绑定函数:

     display(square.bind(null, num));
    

    【讨论】:

      【解决方案4】:

      display(function(){square(num)});

      在你的代码中只写 return 关键字。

      display(function(){return square(num)});

      上面的代码可以正常工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2022-01-12
        • 2020-04-22
        • 1970-01-01
        • 2020-09-10
        相关资源
        最近更新 更多