以前聽輪子哥說過,柯里化只不過是箭頭函式的語法糖。覺得是有那麼點意思,自己好像懂了。直到我看redux官方文件middleware,我才真正理解了為什麼說柯里化是箭頭函式的語法糖。於是記錄下來,供以後開發時參考,相信對其他人也有用。
redux官方文件middleware裡面有這麼一段**:
const logger = store => next => action =>
當時看到這裡我有點懵了,箭頭函式還能這麼寫?有這麼簡潔優美的寫法嗎???然後繼續看上下文,發現上面的**是下面這段**的簡寫形式:
function logger(store)
}}
原來是這樣啊!!!這就是箭頭函式的巢狀,實際上就是柯里化!!!所以柯里化只不過是箭頭函式的語法糖!!!
舉個例子,對於加法,我們可以這麼寫:
function add(a, b)
但是我們用柯里化怎麼寫呢?
function add(a)
}
於是我們想怎麼用就怎麼用:
console.log(add(4)(5)); //輸出9
const add4 = add(4);
console.log(add4(5)); //輸出9
console.log(add4(6)); //輸出10
但是呢,上面那段柯里化的**很難懂啊,而且有巢狀,寫起來不優雅不簡潔,如果巢狀很多的話也會發生「巢狀地獄」。但是,如果用箭頭函式的話,用1行**就搞定了。
const add = (a) => (b) => a + b;
另外,我們在看類似react-redux的connect**的時候有時會有點懵:
const visibletodolist = connect(
mapstatetoprops,
mapdispatchtoprops
)(todolist)
這什麼寫法?實際上就是柯里化而已,只不過對connect做了箭頭函式的兩重巢狀而已!!! 箭頭箭頭函式
var fn function a 一樣 jineng function 箭頭函式外面指向誰就指向誰 有function.console.log fn3 1 像函式表示式 this指向不變.不能作為建構函式 不能使用new 返回物件的話.外部用括號 var fn7 name asdfnasd age...
箭頭函式寫法 箭頭函式
1 箭頭函式介紹 es6 let fn v v console.log fn 好酷的箭頭函式!好酷的箭頭函式!es5 let fn function v 和return省略掉 v v v 相當於 function v 和return v 和return時,如果返回的內容是乙個物件,物件需要用括號 括...
箭頭函式及箭頭函式中this的使用
1.定義函式的方式 function const aaa function 3.es6中的箭頭函式 const ccc 引數列表 3.1 有乙個引數 括號可省略 const sum num1 3.2 有兩個引數 const sum num1,num2 3.3 函式 塊中有多行 時 依次寫 const...