第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

js 鏈?zhǔn)秸{(diào)用如何做? add(2)(3)(4) => 輸出 他們的和 9

js 鏈?zhǔn)秸{(diào)用如何做? add(2)(3)(4) => 輸出 他們的和 9

繁星淼淼 2018-08-02 09:10:18
寫一個函數(shù) add=function(n){} 求詳細(xì)代碼注釋解釋實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用相加效果 add(1)(2)(3)(4) //10 或者 addTwo + 5 // 7
查看完整描述

1 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個贊

順手寫了一個:

function add(n) {  var fn = function(m) {    return add(n + m);
  };

  fn.valueOf = function() {    return n;
  };

  fn.toString = function() {    return '' + n;
  };  return fn;
}

測試:

+add(1) // 結(jié)果 1+add(1)(2) // 結(jié)果 3+add(1)(2)(3) // 結(jié)果 6+add(1)(2)(3)(4) // 結(jié)果 10'' + add(1)(2)(3)(4) // 結(jié)果 "10"

解釋:

  1. 因?yàn)槭擎準(zhǔn)秸{(diào)用,所以返回值肯定是一個函數(shù),這個函數(shù)我們記為fn。

  2. 這個fn就是下一次調(diào)用的函數(shù),當(dāng)然它還是會返回一個函數(shù),顯然這個函數(shù)跟fn的結(jié)構(gòu)是完全一樣的。但是如果這樣一直寫下去,你要寫無數(shù)次。所以呢,直接返回add就可以了,有點(diǎn)類似遞歸。

  3. 而且,第二次調(diào)用add時需要把之前的結(jié)果累加進(jìn)去,所以是add(m + n),“加法”就是在這一步實(shí)現(xiàn)的。

  4. 既然每次都返回一個函數(shù),那么怎樣把計(jì)算結(jié)果取出來呢?我們把返回值函數(shù)的toStringvalueOf方法重寫了,讓它們返回和。這是因?yàn)閷ο?函數(shù)也是一種對象)在轉(zhuǎn)為原始類型時,會調(diào)用自身的toString和(或)valueOf方法。這樣以來,就可以把結(jié)果用在表達(dá)式中了,例如:

add(1) + add(2)(3) // 結(jié)果6add(3)(4) * add(5)(6) // 結(jié)果77


查看完整回答
反對 回復(fù) 2018-09-23
  • 1 回答
  • 0 關(guān)注
  • 694 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號