函數柯理化基本概念是:柯里化(Currying)是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,而且返回接受餘下的參數且返回結果的新函數的技術;
兩年前阿里出了一個頗有意思的面試題:
es6
柯里化函數的運行過程實際上是一個參數的收集過程
咱們先聲明一個變量來接受這個參數,當沒有參數傳入的時候表示已經收集完成了,就執行咱們的add方法
面試
那咱們改改代碼,es6有…運算符,能夠支持這個操做
數組
固然是能夠的
首先咱們要把add作成一個參數傳入到咱們的函數裏面,而後採用閉包的形式聲明一個all的數據隊列,而後在返回咱們須要的sum函數進行遞歸的操做
具體代碼以下
promise
調用不一樣的方法來生成不一樣的函數,而後保存起來,供咱們屢次的複用。若是看懂了,麻煩給個贊喲,若是沒看懂,麻煩告訴我那裏不懂,我會及時更新補充的!閉包