版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
浅谈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,相信大家也能很快做出来啦~