浅谈fn()()()之如何实现fn(2)(3)(4)使得结果等于24

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/user54264988464/article/details/102757417

浅谈fn()()()之如何实现fn(2)(3)(4)使得结果等于24

最近经常被问到如何实现fn(2)(3)(4)使得结果等于24。其实这道题的代码实现很简单。以下为具体的代码:

function fn(a) {
    return function (b) {
      return function (c) {
        console.log(a * b * c);
      }
    }
  }

下面我们从一个简单的函数来试图加深对它的理解:

function fn(){
  return "hello";
}
console.log(fn());    //hello

以上函数,执行后打印出的是hello
我们发现,当我们执行这样一个简单的函数时,打印函数本身和打印函数返回的内容,结果是一样的。

既然函数返回值可以返回任何值,那么现在我们让它返回一个函数。

对于作为返回值的这个函数的执行,其实就是在作为返回值的这个函数后面,加上一个();
参见函数的执行公式: 函数名()

代码实现如下

function fn(){
  return function(){
    console.log("1");    //1
  }
}
fn()();  

当打印出1时,我们发现,返回的函数已经执行。fn()()的结构也已经出现。
我们可以轻易得到以下代码:

function fn(a){
  return function fn(b){
    return console.log(2*3);//6
  }
}
fn(2)(3);   
    

而原题就是在这个里面再返回一个函数。

按照这个理解,把题目换成fn(2)(3)(4)(5)使得结果等于14,相信大家也能很快做出来啦~

猜你喜欢

转载自blog.csdn.net/user54264988464/article/details/102757417
今日推荐