在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js一道題目,大家進來瞅一瞅

js一道題目,大家進來瞅一瞅

函數(shù)add可以實現(xiàn)連續(xù)的加法運算
函數(shù)add語法如下
add(num1)(num2)(num3)...;//注意這里是省略號喲,無限
使用舉例如下:
add(10)(10)=20;
add(10)(20)(50)=80;
add(10)(20)(50)(100)=180;
請用js代碼實現(xiàn)函數(shù)add。

function add(num){
    var sum=num,
    
        tmp=function(v){
            sum+=v;
            return tmp
        };
    
    tmp.toString=function(){
        return sum
    };
    
    return tmp
}


console.log( add(10)(20)(50) )        //80

這個tmp又返回tmp是什么操作,這就是傳說中的偏函數(shù)嗎?還有toString的調(diào)用?

回答
編輯回答
舊酒館

調(diào)用函數(shù)返回函數(shù) 就可以一直()下去了 因為返回的是函數(shù) 所以是打印不出數(shù)字的 修改toString 使得打印數(shù)字

2017年9月26日 20:11
編輯回答
祉小皓

這是柯里化,可以瞅瞅這個柯里化

2017年4月14日 20:58
編輯回答
妖妖
console.log( add(10)(20)(50) )

之后代碼運行的過程是:
1.首先執(zhí)行add(10),初始化add函數(shù)內(nèi)部sum為10,

return tmp=function(v){
            10+=v;
            return tmp
        };

2.其后執(zhí)行tmp(20)即:

return tmp=function(20){
            10+=20;
            return tmp
        };

3.其后執(zhí)行tmp(50)

return tmp=function(50){
            30+=50;
            return tmp
        };

4.其后輸出時會執(zhí)行一個類型轉(zhuǎn)換函數(shù)即被重寫的:

tmp.toString=function(){
        return sum
    };

5.輸出tmp函數(shù)以及即內(nèi)容即此時的sum:80

2017年4月4日 16:49
編輯回答
笨小蛋
var a=add(10);
console.log(a); // 10
var b=a(10);
console.log(b); // 20
console.log(a); // 20

你這代碼沒問題?
還有閉包了解一下

2017年11月6日 17:37