亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

BIG陽 2018-08-18 16:43:33
函數add可以實現連續的加法運算函數add語法如下add(num1)(num2)(num3)...;//注意這里是省略號喲,無限使用舉例如下:add(10)(10)=20;add(10)(20)(50)=80;add(10)(20)(50)(100)=180;請用js代碼實現函數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是什么操作,這就是傳說中的偏函數嗎?還有toString的調用?
查看完整描述

2 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

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

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

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

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

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

3.其后執行tmp(50)

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

4.其后輸出時會執行一個類型轉換函數即被重寫的:

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

5.輸出tmp函數以及即內容即此時的sum:80


查看完整回答
反對 回復 2018-08-19
?
森林海

TA貢獻2011條經驗 獲得超2個贊

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

查看完整回答
反對 回復 2018-08-19
  • 2 回答
  • 0 關注
  • 682 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號